2012-04-17 202 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