使用WinHttpQueryHeaders()从代理读取响应

时间:2012-11-01 09:31:52

标签: winhttp

如何使用WinHttpQueryHeader()函数查明是否从代理服务器或终端服务器发送了响应?我尝试将WINHTTP_QUERY_PROXY_AUTHENTICATE用作函数dwInfoLevel的{​​{1}}参数,但我得到的缓冲区为NULL。

winHttpQueryHeader()

int bufferSize = 0; char lpOutBuffer[500]; ReturnVal = WinHttpQueryHeader(Handle, WINHTTP_QUERY_PROXY_AUTHENTICATE, NULL, &bufferSize); ReturnVal= WinHttpQueryHeader(Handle, WINHTTP_QUERY_PROXY_AUTHENTICATE, lpOutBuffer, &bufferSize); 为NULL。

实际上我认为这里的问题是我在第一个lpOutBuffer获得了bufferSize 0,因此第二个WinHttpQueryHeader没有填充WinHttpQueryHeader(因为{ {1}}是0)。为什么lpOutBuffer返回为0?

与此相反,如果我使用bufferSize作为bufferSize,我会得到正确的输出而InfoLevel不是0,它会在第一个WINHTTP_QUERY_RAW_HEADERS_CRLF之后填充调用..

1 个答案:

答案 0 :(得分:0)

如果HTTP服务器需要身份验证,则HTTP响应代码为401,相应的响应头为WWW-Authenticate。如果代理服务器需要身份验证,则HTTP响应代码为407,相应的响应头为Proxy-Authenticate。我建议检查正确的HTTP代码的响应,然后检索相应的标头。

至于WINHTTP_QUERY_PROXY_AUTHENTICATE查询标志,documentation州:

  

检索用于向代理标识用户的标头   要求认证。此标头只能在之前检索   请求被发送到服务器。

因此,特定标志与服务器的响应无关。它是一个请求标头,用于标识代理用户。