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>
我在我们的一个数据中心托管了使用 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>