首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用winhttp获取请求cookie?

如何用winhttp获取请求cookie?
EN

Stack Overflow用户
提问于 2015-08-01 16:16:34
回答 2查看 1.3K关注 0票数 2

响应Cookie ('Set-Cookie‘响应头)获取正常,但请求Cookie ('Cookie’请求头)即使使用WINHTTP_QUERY_FLAG_REQUEST_HEADERS也无法通过WinHttpQueryHeaders获取

代码语言:javascript
复制
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

怎么了?

EN

回答 2

Stack Overflow用户

发布于 2016-01-06 19:37:29

这应该是可行的:

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2017-06-03 06:26:34

我能够通过使用(WINHTTP_QUERY_FLAG_REQUEST_HEADERS|WINHTTP_QUERY_RAW_HEADERS_CRLF)组合来检索请求头(包括cookies),而不是只使用WINHTTP_QUERY_RAW_HEADERS_CRLF作为响应头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31759787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档