2012-04-17 29 views
7

Uso de curl para enviar una solicitud SOAP a un servicio web y obtener la respuesta utilizando scripts de shell. se adjunta a continuación el comando que estoy utilizando: -Invocar solicitud SOAP desde el comando de shell

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

estoy recibiendo una respuesta de error que dice que ninguna cabecera SOAPAction. PFB el cuerpo de la respuesta parte

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

Cualquier ayuda se agradece !!

Respuesta

8

Debe proporcionar el nombre de la acción SOAP. Usted tiene:

-H "SOAPAction:" 

Indique el nombre de la acción allí. P.ej.

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

Obtenga el nombre de la acción del WSDL si tiene una. Por ejemplo, ver How do you determine a valid SoapAction?.

+3

No olvides citar el URI en el encabezado SoapAction - la especificación requiere que, si no es nulo, debe ser doble, es decir 'SOAPAction:" http: // mi_example/mi_acción "' – Petesh

0

Desde el WSDL del servicio, puede encontrar SoapAction. Y puede encontrar la operación que intenta invocar y acceder al WSDL abriendo un navegador web a la url del servicio. Usando Curl para invocar SoapAction, debe especificar la Acción por "-H", como -H SOAPAction: http://tempuri.org/Execute.

+0

¿hay alguna otra camino en bash linux para hacer esto sin curl? –

Cuestiones relacionadas