但是来自 MSDN(WinHTTP 中的身份验证)的示例会在 WinHttpReceiveResponse 之后检查此值。
乍一看,样本可能看起来像这样。但是,如果您仔细观察,该示例实际上会检查是否ERROR_WINHTTP_RESEND_REQUEST
失败: WinHttpSendRequest()
WinHttpReceiveResponse()
// Send a request.
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0,
WINHTTP_NO_REQUEST_DATA,
0,
0,
0 );
// End the request.
if( bResults )
bResults = WinHttpReceiveResponse( hRequest, NULL );
// Resend the request in case of
// ERROR_WINHTTP_RESEND_REQUEST error.
if( !bResults && GetLastError( ) == ERROR_WINHTTP_RESEND_REQUEST)
continue;
如果WinHttpSendRequest()
返回FALSE
,调用WinHttpReceiveResponse()
将被跳过并被GetLastError()
检查ERROR_WINHTTP_RESEND_REQUEST
。此代码在while
循环内,因此该continue
语句将导致循环的剩余部分被跳过,因此WinHttpSendRequest()
将再次调用。
结论:样品与参考文件相符。