Soap UI 与 Curl 响应时间差异

Soap UI vs Curl Response tIme Difference

我在我们的一个数据中心托管了使用 spring 构建的 soap 服务。当我通过 SOAP UI 进行测试时,我会在 1 秒或更短的时间内得到响应。但是,当我 运行 通过 CURL 发出相同的请求时,执行时间超过 30 秒。我正在 运行ning 来自同一台机器的两个命令。是什么导致了这种差异?

curl  -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:"  -d @request.xml <endpoint>

需要考虑的几件事:

  • SOAP 请求的媒体类型(Content-Type header 字段)应为 application/soap+xml(参见 SOAP 1.2 specs, end of section 1.3)。如果你的编码是UTF-8,那么设置Content-Type: application/soap+xml; charset=UTF-8.

  • 您的 SOAPAction header 字段未定义,这意味着 curl 根本没有发送该字段。如果你 运行 curl 带有 --trace-ascii /dev/stdout 选项,你可以检查这个。

  • 要发送您的 XML(二进制)负载 as-is,您可以使用 --data-binary option, instead of -d/--data。它将保留换行符和回车符 returns。对于 XML 应该没有任何区别的内容,但这可能取决于所使用的解析器和模式的严格性。

  • 在调试 curl 请求时,将请求从 httpbin 等回显站点反弹以及使用 -vvv 启用完整的详细信息很有用,也许甚至使用 --trace* 来检查确切的负载 sent/received.

应用这些修复后,您的 curl 命令将如下所示:

curl -H 'Content-Type: application/soap+xml; charset=UTF-8' \
     -H 'SOAPAction: Some-Action' \
     --data-binary @request.xml \
     <endpoint>