c++ - 为 C++ WinHttp 设置 useUnsafeHeaderParsing

标签 c++ c winapi winhttp

我正在尝试访问嵌入式设备上的网页。 我在 Win32 上使用 WinHttp。 尝试读取响应时出现错误

ERROR_WINHTTP_INVALID_SERVER_RESPONSE 12152 The server response cannot be parsed.

但是当我使用 WireShark 捕获时,我可以看到响应即将到来。 所以为了测试我写了一个简单的 C# 程序。 GetResponse 抛出异常

The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

所以根据下面的解决方案,我将 useUnsafeHeaderParsing 设置为 true。而且效果很好。

HttpWebRequestError: The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

因为我不能使用 C#,所以我需要找到一种方法来将 useUnsafeHeaderParsing 设置为 true for WinHttp with win32 C++

非常感谢

最佳答案

我简要地查看了 option flagsWinHttpSetOption并找到以下条目:

WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING This option is reserved for internal use and should not be called.

由于该选项看起来与开/关开关有关,所以我会尝试执行以下操作:

BOOL bResult;
BOOL bOption = FALSE;

bResult = WinHttpSetOption(hInternet, 
                           WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING,
                           &bOption,
                           sizeof(bOption));
if (bResult == FALSE)
{
    /* handle error with GetLastError() */
}

好吧,但正如 MSDN 所说,它保留供内部使用,因此该功能将来可能会发生变化(或者过去已经发生变化)。但这值得一试……祝你好运!

关于c++ - 为 C++ WinHttp 设置 useUnsafeHeaderParsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379771/

相关文章:

c++ - 如何在 3D 空间中生成随机点?

c++ - STATIC_ASSERTION_FAILURE 有什么作用?

c - realloc() 第一次调用后不分配

c - 在 pelles c windows.h 中无法编译

c++ - ListView 控件因列数过多而性能下降

c - 将 40 个套接字绑定(bind)到 40 个不同的 IP 地址

c# - 捕获正在运行的进程的 FlashWindowEx 事件

c++ - 与列表初始化语法的自动分配混淆

c++ - 如何制作整个 QDomDocument 的深拷贝

c - 如何将 int 的 void* 转换为 float* 以便正确转换值。无需事先了解类型