2012-04-17 5 views
7

Ich benutze curl, um eine SOAP-Anfrage an einen Web-Service zu senden und die Antwort mithilfe von Shell-Skripten zu erhalten. bitte unter dem Befehl finden ich verwende: -Aufrufen der SOAP-Anfrage vom Shell-Befehl

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

ich eine Fehlermeldung immer bin, die keine Soapaction-Kopf sagt. PFB die Antwort Körperteil

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

Jede Hilfe ist willkommen !!

Antwort

8

Sie müssen den Namen der SOAP-Aktion angeben. Sie haben:

-H "SOAPAction:" 

Geben Sie den Namen der Aktion dort ein. Z.B.

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

Nennen Sie den Namen der Aktion aus der WSDL, wenn Sie eine haben. Z. B. siehe How do you determine a valid SoapAction?.

+3

Vergessen Sie nicht, die URI im SoapAction-Header zu zitieren - die Spezifikation erfordert, dass, wenn es nicht null ist, es doppelt zitiert werden muss, dh 'SOAPAction: 'http: // my_example/my_action'' – Petesh

0

In der WSDL des Service finden Sie SoapAction. Und Sie können die Operation, die Sie aufrufen möchten, aufrufen und auf die WSDL zugreifen, indem Sie einen Webbrowser für die URL des Service öffnen. Mit der Funktion "Curl" zum Aufrufen von SoapAction sollten Sie die Aktion mit "-H" angeben, z. B. -H SOAPAction: http://tempuri.org/Execute.

+0

gibt es andere wie in bash linux das ohne curl zu machen? –

Verwandte Themen