2016-06-23 2 views
0

Если я curl сервер SOAP с помощью:В чем разница между скручиванием данных через cat и с помощью параметра данных?

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

Я получаю сообщение об ошибке от сервера мыла. Однако странно, если я сохраню этот запрос в файле и выдаст тот же запрос через:

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

Новые линии.

Я понял это с помощью HTTP-сервера php proxy, чтобы увидеть правильный запрос и сравнить разницу.

Первый подход содержит символы новой строки, а другой - их удаление. И этот конкретный мыльный сервер не любит новые строки.

Таким образом, чтобы получить локоны с помощью встроенных данных, необходимо:

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