通过cat和via数据参数卷曲数据之间的区别是什么?

时间:2016-06-23 21:18:22

标签: curl soap http-post httprequest newline

如果我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 @-
它突然起作用了。这些卷曲请求有何不同?

1 个答案:

答案 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>'