2012-04-17 95 views
7

我使用curl向Web服务发送SOAP请求,并使用shell脚本获取响应。请在下面找到我正在使用的命令: -从shell命令调用SOAP请求

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @sample_request.txt -X POST http://someWebServiceURL 

我得到一个错误响应,它说没有SOAPAction头。 PFB响应正文部分

<soapenv:Body> 
<soapenv:Fault> 
<faultcode>Client.NoSOAPAction</faultcode> 
<faultstring>WSWS3147E: Error: no SOAPAction header!</faultstring> 
</soapenv:Fault> 
</soapenv:Body> 

任何帮助表示赞赏!

回答

8

您需要提供SOAP操作的名称。你有:

-H "SOAPAction:" 

在那里提供动作的名称。例如。

-H "SOAPAction: http://my_example/my_action" 

从WSDL获取操作的名称(如果有的话)。例如,见How do you determine a valid SoapAction?

+3

不要忘记引用SoapAction头中的URI - 规范要求如果它不是null,那么它必须是双引号,即'SOAPAction:“http:// my_example/my_action”' – Petesh 2012-04-17 07:53:22

0

从服务的WSDL中,您可以找到SoapAction。您可以通过打开Web浏览器访问服务的URL来找到您尝试调用和访问WSDL的操作。 使用Curl调用SoapAction,您应该通过“-H”指定Action,例如-H SOAPAction:http://tempuri.org/Execute

+0

是否还有其他在bash linux的方式来做到这一点,而不卷曲? – 2015-06-24 13:49:39