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

Win32 WinHttp: Correct way to query custom response header?

我想从响应 headers 中查询 ETag header(当然 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)

没有成功。

传递 WinHttpQueryHeaders 一个 dwInfoLevel 设置为 WINHTTP_QUERY_CUSTOM 其中:

Causes WinHttpQueryHeaders to search for the header name specified in the pwszName parameter and store the header information in lpBuffer.