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
.
我想从响应 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 thepwszName
parameter and store the header information inlpBuffer
.