1

我试图让 Wininet 忽略 Internet Explorer 的“脱机工作”模式,用于 HTTP 和 FTP。

所以我正在尝试使用InternetSetOption()with INTERNET_OPTION_IGNORE_OFFLINE。文档说“这由请求句柄使用InternetQueryOptionInternetSetOption与请求句柄一起使用。” 但是,您无法获得请求句柄,因为如果 IE 处于脱机工作模式,那么InternetConnect()将始终返回空句柄。如果没有连接句柄,您将无法获得请求句柄。所以我尝试将它与InternetOpen()手柄和NULL手柄一起使用。两者都失败了ERROR_INTERNET_INCORRECT_HANDLE_TYPE

有没有办法让这个选项起作用?我在 2003 年的一个 MS 新闻组上找到了一个INTERNET_OPEN_TYPE_PRECONFIG“损坏”的参考资料。5年后使用IE8 beta 2,他们仍然没有修复它?还是我做错了。

编辑
我不太正确。 InternetConnect()如果您处于“脱机工作”模式并使用 FTP,则始终返回 null,但如果您使用 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);
4

2 回答 2

1

我检查INTERNET_OPTION_IGNORE_OFFLINE了 IE 9 版本的 WinInet 的使用情况,它似乎确实有效。

确保在调用 HttpOpenRequest之前调用 InternetSetOption并传入 hInternet 句柄。必须在请求实际发送到服务器之前设置该选项。HttpOpenRequest

+++ 瑞克 ---

于 2011-04-21T05:03:21.190 回答
0

您是否尝试过在标头中发送其他数据GET而不是哪个?POST

例如,在 REST-ful API 中,POST 请求等同于 Create、Update、Delete 和 GET to Read,这可能会破坏离线模式。只是猜测...

于 2009-01-22T22:46:03.197 回答