WinINet: Как запретить HttpSendRequest следовать перенаправлениям (30x кодов состояния)? - PullRequest
2 голосов
/ 13 февраля 2009

Когда я делаю HTTP-запрос с помощью метода HttpSendRequest API WinINet , и ответ отправляет «302: Moved Temporarily», WinINet API автоматически следует инструкции перенаправления и выполняет новый запрос.

Итак, как запретить HttpSendRequest выполнять перенаправления (30x коды состояния)?

Я не хочу, чтобы я не делал два запроса ... Я не хочу получать первый ответ с кодом состояния 302 в заголовке.

Ответы [ 4 ]

2 голосов
/ 13 февраля 2009

Я нашел флаг INTERNET_FLAG_NO_AUTO_REDIRECT, который я должен передать HttpOpenRequest.

Но это не работает ....

0 голосов
/ 29 декабря 2013

Похоже, что поведение WinInet во многом зависит от lpszAgent, указанного в вызове функции InternetOpen. Когда вы передаете "Mozilla/5.0 (compatible)", все перенаправления игнорируются, и вы получите результат RAW HTML при чтении ответа с InternetReadFile.

С другой стороны, если вам нужен «перенаправленный» вывод, вы должны указать имя вашего приложения в аргументе агента, например "ConEmu Update".

0 голосов
/ 15 мая 2009

Попробуйте использовать INTERNET_FLAG_NO_AUTO_REDIRECT при вызове на HttpSendRequest. Похоже, вы пытаетесь использовать его с HttpOpenRequest.

Я использую этот флаг с InternetOpenUrl, и он правильно работает в этом вызове.

0 голосов
/ 15 мая 2009

Перенаправление можно предотвратить, если вместо этого вы можете использовать WinHTTP ( ссылка ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...