soapui与Curl响应时间差

soapui与Curl响应时间差,curl,soapui,Curl,Soapui,我在我们的一个数据中心托管了一个使用spring构建的soap服务。当我通过soapui进行测试时,我会在1秒或更短的时间内得到响应。但是,当我通过CURL运行同一个请求时,执行该请求需要30秒以上的时间。我正在运行来自同一台机器的两个命令。是什么导致了这种差异 curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @request.xml <endpoint> curl-H”内容类型:text/

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

curl  -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:"  -d @request.xml <endpoint>
curl-H”内容类型:text/xml;charset=utf-8“-H”SOAPAction:“-d@request.xml

需要考虑的几件事:

  • SOAP请求的媒体类型(
    Content-type
    头字段)应该是
    application/SOAP+xml
    (请参阅)。如果您的编码是UTF-8,那么设置
    内容类型:application/soap+xml;字符集=UTF-8

  • 您的
    SOAPAction
    标题字段未定义,这意味着
    curl
    根本不发送该字段。如果使用选项运行
    curl
    ,则可以检查此选项

  • 要按原样发送XML(二进制)负载,可以使用选项,而不是。它将保留换行和回车。对于XML内容,这应该并没有什么区别,但这可能取决于所使用的解析器和模式的严格程度

  • 调试
    curl
    请求时,将请求从echo站点(如)跳出非常有用,还可以使用
    -vvv
    启用完整的详细信息,甚至可以使用
    -trace*
    检查发送/接收的确切负载

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

curl -H 'Content-Type: application/soap+xml; charset=UTF-8' \
     -H 'SOAPAction: Some-Action' \
     --data-binary @request.xml \
     <endpoint>
curl-H'内容类型:application/soap+xml;字符集=UTF-8'\
-“SOAPAction:一些动作”\
--data binary@request.xml\

你能编写
curl
命令吗?@randomir我更新了curl命令也许你应该使用
内容类型:application/soap+xml;字符集=UTF-8
。但是你肯定应该定义你的
SOAPAction
头,因为现在它是无效的--
curl
根本不发送它。谢谢@randomir。当我使用application/xml时,我看到了这个错误:{“timestamp”:1511205140609,“validationMessages”:[]}curl:(18)传输已结束,剩余273352字节为readThank!看起来像-d剥离新行等,而-data二进制按原样发送请求。我在另一个帖子里看到的。请你发布你的答案,我将接受并添加赏金:)再次感谢你的帮助。看来我只能在23小时后才能奖励赏金。我明天做。