Win32 WinHttp:查询自定义响应头的正确方法?

时间:2016-02-09 10:07:23

标签: winapi http-headers winhttp

我想从响应头查询 ETag 标头(当然ETag是HTTP标准,但它没有被定义为WinHttpQueryHeaders函数中的标志)。这是微软的example

HRESULT ReadHeader(
    __in HINTERNET requestHandle, 
    __in_z WCHAR* headerName, 
    __in ULONG queryFlags)
{
    HRESULT hr = NOERROR;
    WCHAR headerBuffer[256];
    ULONG headerLength = sizeof(headerBuffer);

    if (!WinHttpQueryHeaders(
        requestHandle,
        queryFlags,
        NULL,
        headerBuffer,
        &headerLength,
        WINHTTP_NO_HEADER_INDEX))
    {
        hr = HRESULT_FROM_WIN32(GetLastError());
        goto Exit;
    }

    wprintf(L"%s: %s\n", headerName, headerBuffer);

Exit:
    return hr;
}

它可以用于使用标志查询值。但我如何处理ETag?我试过了:

WinHttpQueryHeaders(
    requestHandle,
    NULL,
    L"ETag",
    headerBuffer,
    &headerLength,
    WINHTTP_NO_HEADER_INDEX)

没有成功。

1 个答案:

答案 0 :(得分:2)

WinHttpQueryHeaders dwInfoLevel设置为WINHTTP_QUERY_CUSTOM,其中包含:{/ p>

  

使WinHttpQueryHeaders搜索指定的标题名称   pwszName参数,并将标题信息存储在lpBuffer