Очень похоже на это question, я пытаюсь получить определенное значение в заголовке ответа. Он ссылается на pass-through solution с использованием обработчиков Asynchronous Pluggable Protocol (APP), однако ссылки мертвы, так как решение довольно устарело.Заголовок ответа HTTP от IWebBrowser2
Возможно, я приближаюсь к этому неправильно.
Обзор: Я расширяю библиотеку OAuth2, что я написал в C++ (настольное приложение), который хорошо работает для API, Google, чтобы в настоящее время позволяет переговоры с Microsoft. Как указано на this site (в разделе «Запрос на переадресацию после успешного входа '), код auth возвращается в поле Location заголовка ответа. Используя HTTP-отладчик, я могу увидеть значение, которое было отправлено (см. Ниже).
При попытке получить IHTMLLocation интерфейс от IHTMLDocument2, ни одно из свойств не содержит значение, которое я могу видеть, используя HTTP-отладчик, и эти вызовы успеха с различными значениями, даже когда поле «Location» не существует в заголовках ответа (это явно не то, что необходимо).
Это единственное зависание. Все последующие вызовы и запросы, я использую API WinHTTP, а заголовки ответов - easily accessed. Однако на этом этапе пользователь может правильно аутентифицировать и авторизировать приложение в браузере. Я ценю ваше время и помощь.
Update: Реакция выглядит примерно следующим образом:
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Location: urn:ietf:wg:oauth:2.0:oob?code=[VALUE]
Если есть заголовок 'Location:', то должен быть код ответа перенаправления 301 или 302, который часто автоматически выполняется. У новых заголовков ответов не будет заголовок 'Location'. Может быть так? – Kenney
Да, я обновлю вопрос. – Jeff
'IHTMLDocument2' не предоставляет доступ к заголовкам HTTP. «IHTMLLocation» представляет конечный URL-адрес, который фактически загружен в текущий документ, поэтому он никогда не будет представлять промежуточные URL-адреса, которые предоставляются перенаправлением HTTP, вплоть до этого конечного URL-адреса. Для того, что вы пытаетесь сделать, вам, скорее всего, придется создавать свои собственные HTTP-запросы, например, с помощью WinInet/WinHTTP или любой другой библиотеки HTTP, а затем вручную загрузить полученный HTML в экземпляр WebBrowser, если вам нужно отобразить его на пользователь. –