如果我curl
通过以下方式获取SOAP服务器:
curl 'http://the-soap-server' -H 'Content-Type: text/xml; charset=utf-8' \
-H 'SOAPAction: http://tempuri.org/Action' -X POST \
--data '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:Booking>
...
</soapenv:Body>
</soapenv:Envelope>'
我从soap服务器收到错误响应。但奇怪的是,如果我将该请求存储在一个文件中并通过以下方式发出相同的请求:
cat stored.xml | curl 'http://the-soap-server' -H 'Content-Type: text/xml; charset=utf-8' \
-H 'SOAPAction: http://tempuri.org/Action' -X POST \
--data @-
它突然起作用了。这些卷曲请求有何不同?
答案 0 :(得分:0)
新线。
我想通过使用php代理http服务器查看收到的正确请求并比较差异。
第一种方法保留换行符,另一种方法删除换行符。而这个特殊的肥皂服务器不喜欢新行。
因此,要通过内联数据获得curl,必须:
curl 'http://the-soap-server' -H 'Content-Type: text/xml; charset=utf-8' \
-H 'SOAPAction: http://tempuri.org/Action' -X POST \
--data '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><soapenv:Header/><soapenv:Body><tem:Booking>...</soapenv:Body></soapenv:Envelope>'