Информация об изменениях

Сообщение Re[4]: Как правильно получить ответ от HTTP-сервера? от 25.04.2016 8:18

Изменено 25.04.2016 9:47 sushko

Здравствуйте, jahr, Вы писали:

J>Скорее всего — при отправке данных указана неверная длина контента, тогда сервер не отвечает пока не получит того, что ему по его мнению не хватает. Длина контента указывается в соответствующем хедере. Проще всего установить какой-нибудь сниффер типа Wireshark, в котором посмотреть, что именно отправляется на сервер и сравнить с тем, что отправляет вариант с curl. Но то, что сервер не отвечает — хорошая заявка на то, что в запросе указана неверная длина данных запроса.


Ага, спасибо, я проверю.

J>Вот здесь ошибка :

J>int iUtf8Length = 0;
J>pFile->SendRequestEx(iUtf8Length-1);

Не, там дело в том, что AnsiToUtf8() добавляет ноль в конец преобразованной строки, и отправлять этот ноль в HTTP просто незачем.
Re[4]: Как правильно получить ответ от HTTP-сервера?
Здравствуйте, jahr, Вы писали:

J>Скорее всего — при отправке данных указана неверная длина контента, тогда сервер не отвечает пока не получит того, что ему по его мнению не хватает. Длина контента указывается в соответствующем хедере. Проще всего установить какой-нибудь сниффер типа Wireshark, в котором посмотреть, что именно отправляется на сервер и сравнить с тем, что отправляет вариант с curl. Но то, что сервер не отвечает — хорошая заявка на то, что в запросе указана неверная длина данных запроса.


Ага, спасибо, я проверю.

J>Вот здесь ошибка :

J>int iUtf8Length = 0;
J>pFile->SendRequestEx(iUtf8Length-1);

Между этими двумя операторами стоИт:

char *utf8Contents = AnsiToUtf8((char*)(LPCTSTR)sXml, &iUtf8Length);

, кот. возвращает в OUT-параметре эту самую iUtf8Length. AnsiToUtf8() добавляет ноль в конец преобразованной строки, и отправлять этот ноль в HTTP просто незачем, поэтому в SendRequestEx() передается iUtf8Length-1.