响应Cookie ('Set-Cookie‘响应头)获取正常,但请求Cookie ('Cookie’请求头)即使使用WINHTTP_QUERY_FLAG_REQUEST_HEADERS也无法通过WinHttpQueryHeaders获取
DWORD size = 0;
BOOL re = WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_COOKIE /*| WINHTTP_QUERY_FLAG_REQUEST_HEADERS*/, nullptr, nullptr, &size, nullptr);
DWORD err = GetLastError(); // re = 0 && err == ERROR_WINHTTP_HEADER_NOT_FOUND怎么了?
发布于 2016-01-06 19:37:29
这应该是可行的:
DWORD lastError;
LPVOID lpBuffer;
DWORD dwSize = 0, dwIndex = 0;
// Call with zero size to get actual size
BOOL res = WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_COOKIE,
WINHTTP_HEADER_NAME_BY_INDEX,
NULL,
&dwSize,
&dwIndex);
lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER)
{
lpBuffer = new WCHAR[dwSize/sizeof(WCHAR)];
WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_COOKIE,
WINHTTP_HEADER_NAME_BY_INDEX,
lpBuffer,
&dwSize,
&dwIndex);
// convert result to wstring
std::wstring result(reinterpret_cast<wchar_t*>(lpBuffer),
dwSize/sizeof(wchar_t));
std::wcout << L"Result: " << result << endl;
delete[] lpBuffer;
}发布于 2017-06-03 06:26:34
我能够通过使用(WINHTTP_QUERY_FLAG_REQUEST_HEADERS|WINHTTP_QUERY_RAW_HEADERS_CRLF)组合来检索请求头(包括cookies),而不是只使用WINHTTP_QUERY_RAW_HEADERS_CRLF作为响应头。
https://stackoverflow.com/questions/31759787
复制相似问题