2012-04-17 13 views
7

Używam curl, aby wysłać żądanie SOAP do usługi WWW i uzyskać odpowiedź za pomocą skryptów powłoki. Poniżej znajduje polecenia używam: -Wywoływanie żądania SOAP z komendy powłoki

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

Dostaję odpowiedź o błędzie, który mówi nie nagłówek SOAPAction. PFB ciało odpowiedź część

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

Każda pomoc jest mile widziana !!

Odpowiedz

8

Należy podać nazwę działania SOAP. Masz:

-H "SOAPAction:" 

Podaj nazwę akcji w tym miejscu. Na przykład.

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

Uzyskaj nazwę akcji z pliku WSDL, jeśli ją masz. Np. Patrz How do you determine a valid SoapAction?.

+3

Nie zapomnij podać URI w nagłówku SoapAction - spec wymaga, jeśli nie jest pusty, to musi być podwójnie cytowany czyli 'SOAPAction:„http: // my_example/my_action”' – Petesh

0

Z pliku WSDL usługi można znaleźć SoapAction. I możesz znaleźć operację, którą próbujesz wywołać i uzyskać dostęp do WSDL, otwierając przeglądarkę internetową pod adresem URL usługi. Używając Curl do wywołania SoapAction, powinieneś określić Action przez "-H", na przykład -H SOAPAction: http://tempuri.org/Execute.

+0

jest jakiś inny sposób w bashie Linux, aby to zrobić bez curl? –

Powiązane problemy