我在我们的一个数据中心托管了一个使用 spring 构建的肥皂服务。当我通过 SOAP UI 进行测试时,我会在 1 秒或更短的时间内得到响应。但是,当我通过 CURL 运行相同的请求时,执行时间超过 30 秒。我正在同一台机器上运行这两个命令。什么可能导致这种差异?
curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @request.xml <endpoint>
最佳答案
需要考虑的几点:
Content-Type
头字段)应该是 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
选项。 --data-binary
选项,而不是 -d/--data
.它将保留换行符和回车符。对于不应该有任何区别的 XML 内容,但这可能取决于所使用的解析器和架构的严格性。 curl
请求,从回声站点(如 httpbin)中退回请求很有用,以及启用完整的详细信息 -vvv
,甚至可以使用 --trace*
检查发送/接收的确切有效载荷。 应用这些修复,您的
curl
命令将如下所示:curl -H 'Content-Type: application/soap+xml; charset=UTF-8' \
-H 'SOAPAction: Some-Action' \
--data-binary @request.xml \
<endpoint>
关于curl - Soap UI 与 Curl 响应时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47339034/