【发布时间】:2018-02-16 09:31:40
【问题描述】:
我有一个场景,我需要查看发送到服务器的请求标头。
我尝试在 WinhttpQueryHeaders 中使用选项标志 WINHTTP_QUERY_FLAG_REQUEST_HEADERS,但收到错误 12150 (ERROR_WINHTTP_HEADER_NOT_FOUND)。
我的代码(假设 hRequest 有一个非空值):
LPVOID getRequestHeaders(HINTERNET hRequest)
{
LPVOID tempHeaderBuffer = NULL;
DWORD dwSize = 0;
WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_URI | WINHTTP_QUERY_FLAG_REQUEST_HEADERS, WINHTTP_HEADER_NAME_BY_INDEX, NULL, &dwSize, WINHTTP_NO_HEADER_INDEX);
cout << GetLastError();
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
tempHeaderBuffer = (LPWSTR)malloc(dwSize * sizeof(LPWSTR) + 5);
if (!WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_URI | WINHTTP_QUERY_FLAG_REQUEST_HEADERS, WINHTTP_HEADER_NAME_BY_INDEX, tempHeaderBuffer, &dwSize, WINHTTP_NO_HEADER_INDEX))
{
cout << GetLastError();
}
else
{
printf("GetHTTPResponse : Header Request Contents : \n\n%S", tempHeaderBuffer);
}
}
return tempHeaderBuffer;
}
我在这里做错了什么?有什么建议么?我提到了其他类似的问题,但没有解决。
【问题讨论】: