2015-08-01 3 views
2

печенье Response ('Set-Cookie' заголовка ответа), полученного в порядке, но запрос куки ('Cookie' заголовка запроса) Я не могу получить, WinHttpQueryHeaders даже с WINHTTP_QUERY_FLAG_REQUEST_HEADERS:Как получить файлы cookie с winhttp?

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 

Что случилось?

ответ

0

Это должно работать:

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

Вы смотрите на ответ, и ему нужен запрос. Мне нужно то же самое для регистрации исходящего запроса. –

0

Я был в состоянии получить заголовки запросов (включая печенье), используя (WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_RAW_HEADERS_CRLF) комбинацию, в противоположности только с помощью WINHTTP_QUERY_RAW_HEADERS_CRLF для заголовков ответа.

Смежные вопросы