2008-10-23 5 views
1

Я пытаюсь заставить Wininet игнорировать режим «Работа в автономном режиме» Internet Explorer для HTTP и FTP.WinNET's INTERNET_OPTION_IGNORE_OFFLINE не работает?

Так что я пытаюсь использовать InternetSetOption() с INTERNET_OPTION_IGNORE_OFFLINE. В документации говорится: «Это используется InternetQueryOption и InternetSetOption с дескриптором запроса». Однако вы не можете получить дескриптор запроса, потому что если IE находится в режиме автономной работы, то InternetConnect() всегда будет возвращать нулевой дескриптор. Без ручки соединения вы не можете получить обработчик запроса. Поэтому я попытался использовать его с ручкой InternetOpen() и ручкой NULL. Оба отказались с ERROR_INTERNET_INCORRECT_HANDLE_TYPE.

Есть ли способ заставить этот параметр работать? Я нашел ссылку на группу новостей MS с 2003 года, что INTERNET_OPEN_TYPE_PRECONFIG «сломан». 5 лет спустя с IE8 beta 2, и они все еще не исправили его? Или я делаю это неправильно.

Редактировать
Я был не совсем точен. InternetConnect() всегда возвращает null, если вы находитесь в режиме «Работа в автономном режиме» и используете FTP, но он возвращает действительный дескриптор, если вы используете Http. Однако он по-прежнему не работает даже с дескриптором запроса.

Если я установлен на "Работать автономно", и я называю

BOOL a = TRUE; 
::InternetSetOption(hData, INTERNET_OPTION_IGNORE_OFFLINE, &a, sizeof(BOOL)); 

на ручке от

HINTERNET hData = HttpOpenRequest(hInternet, L"POST", path, NULL, NULL, NULL, flags, 0); 

сменяет InternetSetOption() вызов.
Однако вызов HttpSendRequest() по-прежнему не выполняется с кодом ошибки 2 (файл не найден), так же, как если бы я не задал этот параметр.
То же самое, если я позвоню

::InternetSetOption(hData, INTERNET_OPTION_IGNORE_OFFLINE, 0, 0); 

ответ

0

ли вы пытались GET вместо POST который отправляет дополнительные данные в заголовках?

Например, в запросе POST-запроса REST-ful API эквивалентно созданию, обновлению, удалению и GET для чтения, что может нарушить автономный режим. Просто гадать ...

1

Я проверил использование INTERNET_OPTION_IGNORE_OFFLINE с версией WinInet IE 9 и, похоже, это сработало.

Удостоверьтесь, что вы вызываете InternetSetOption до, вы вызываете HttpOpenRequest и вместо этого передаете в hInternet дескриптор. Параметр должен быть установлен до того, как запрос действительно будет отправлен на сервер. HttpOpenRequest

+++ Rick ---

 Смежные вопросы

  • Нет связанных вопросов^_^