我正在尝试运行以下curl命令,但我收到如下错误:
命令:
curl -H "Content-Type: text/xml; charset=utf-8" \
-H "SOAPAction:" \
-d @amit.xml -X POST http://server-ip:8200/axis/services/SOAPRequestHandler
错误:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
<faultstring>no SOAPAction header!</faultstring>
<detail>
<ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">stsosctwb10</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
我阅读了几篇关于如何解决这个问题的文章,但没有任何帮助。在wsdl文件中,soapAction字段也是空的。下面是wsdl文件内容:
<wsdl:operation name="processSync">
<wsdlsoap:operation soapAction=""/>
你能指导一下我的命令可能出现什么问题吗?
答案 0 :(得分:1)
curl对于没有使用分号的值的标头有特殊语法,请参阅cURL man page:
如果发送带有无值的自定义标头,则其标头必须以分号结束,例如-H“X-Custom-Header;”发送“X-Custom-Header:”
但是,当我向Axis Web服务发布消息时,指定-H "SOAPAction;"
仍会在 no SOAPAction header!消息中结束。它适用于-H "SOAPAction:;"
或-H "SOAPAction:foo"
等任何字符。
确保您的XML有效。
答案 1 :(得分:-1)
指定de SoapAction:
curl --header&#34; Content-Type:text / xml; charset = UTF-8&#34; --header&#34; SOAPAction:ACTION_YOU_WANT_TO_CALL&#34; --data @FILE_NAME URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT
实施例: curl --header&#34; Content-Type:text / xml; charset = UTF-8&#34; --header&#34; SOAPAction:urn:my:service-interaction:soap:some-action&#34; --data @ soap_envelope.txt http://192.168.1.1:8080/myservice