我试图访问嵌入式设备上的网页。 我在Win32上使用WinHttp。 在尝试阅读响应时,我收到错误
ERROR_WINHTTP_INVALID_SERVER_RESPONSE 12152 无法解析服务器响应。
但是当我使用WireShark捕获时,我可以看到响应即将来临。 所以为了测试我写了一个简单的C#程序。 GetResponse抛出异常
服务器提交了协议违规。第= ResponseHeader 细节= CR必须后跟LF
因此,根据以下解决方案,我将useUnsafeHeaderParsing设置为true。它运作良好。
由于我无法使用C#,我需要找到一种方法,使用win32 C ++将WinUttp的useUnsafeHeaderParsing设置为true
非常感谢
答案 0 :(得分:1)
我已经简要地查看了option flags的WinHttpSetOption
并找到了以下条目:
<强> WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING 强> 此选项保留供内部使用,不应调用。
由于该选项看起来像是一个开/关开关,我会尝试执行以下操作:
BOOL bResult;
BOOL bOption = FALSE;
bResult = WinHttpSetOption(hInternet,
WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING,
&bOption,
sizeof(bOption));
if (bResult == FALSE)
{
/* handle error with GetLastError() */
}
好吧,但是MSDN说它保留供内部使用,因此功能可能在将来发生变化(或者过去已经发生过变化)。但值得一试......祝你好运!
答案 1 :(得分:0)
此后看来,选项的名称必须已更改:对于当前的SDK,其名称为WINHTTP_OPTION_UNSAFE_HEADER_PARSING
。另外,我通过直接检查汇编代码来验证:
DWORD
大小很显然,由于未记录,因此可能会发生变化。