Помогите разобраться с curl.exe и заголовком content-Length
А зачем вообще клиенту задавать эти заголовки?
требование сервера. наличие именно этих двух заголовков обязательно.
tcpdump сессии есть?
нет, но постараюсь завтра сделать
это особенность курла или что?я думаю это особенность сервера
Похоже действительно веб сервис сервака так настроен.
Если поможет, то вот на пхп вызов сервиса от клиента серверу:
<?php
$soap = curl_init("http://172.31.0.33:3001/gadservice.php");
curl_setopt($soap, CURLOPT_POST, 1);
$request = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://172.31.0.33:3001/">
<env:Body>
<ns1:Request>
<ns1:gadRequest>
<gad_agent_id>avter
</gad_agent_id>
<gad_session_id>0011001100110011
</gad_session_id>
</ns1:gadRequest>
</ns1:Request>
</env:Body>
</env:Envelope>
XML;
curl_setopt($soap, CURLOPT_HTTPHEADER,
array('Content-Type: text/xml; charset=utf-8',
'Content-Length: '.strlen($request)));
curl_setopt($soap, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($soap);
curl_close($soap);
Оставить комментарий
nas1234
вот сочинил я допустим такую команду:размер файла test.xml 195539, но если указать его именно такой, то на сервере он обрезается с конца.
опытным путём выяснилось, что нужно добавить 89 к размеру и тогда файл приходит полностью.
89 символов это как длина двух хедеров и адреса. это совпадение или именно так и должно быть?
когда я делал то же самое средствами winhttprequest, там я в хедер писал именно размер файла.
это особенность курла или что?