情况: 1) 我需要在 Windows 上为我们的 DLL 使用 C++ 进行 HTTP[S] 网络调用。2) 至少需要支持 XP(我猜 SP3 还可以) 3) 没有 ATL,没有 MFC,没有 IE
问:我最近从 Boost cpp-netlib 切换到使用 MSXML 的 IXMLHTTPRequest 来满足我们在 Windows 上(非常简单)的网络需求。虽然一切似乎都很好,但我们注意到重定向不起作用。在提琴手中,我得到一个 HTTP 302,然后是第二个成功的 HTTP 200 请求/响应。
然而,在实际的 C++ 代码中,我从 IXMLHTTPRequest->Send 得到 E_ACCESSDENIED 并且 HTTP 响应代码为零。所以在代码中我无法知道实际发生了什么。
由于从 Fiddler 开始一切正常,我尝试使其异步并检查回调,还尝试了 IXMLHttpServerRequest、IXMLHttpServerRequest2 和 MSXML v6,但都没有奏效。
注意:我们在 WinRT 上使用 IXMLHttpRequest2 并且效果很好(处理 OnRedirect 事件)。
有没有办法让 MSXML 的 IXMLHTTPRequest 处理重定向?
还是我需要切换到 WinInet/WinSockets/WinHttp?我认为我需要使用 WinHttp(因为我需要支持 Windows 服务/IIS,而 WInInet 显然不支持,而且 WinSockets 对于我的需求来说太低了)。
谢谢!