描述
WinHttpReceiveResponse功能等待接收由WinHttpSendRequest发起的HTTP请求的响应。WinHttpReceiveResponse成功完成后,系统已收到状态代码和响应标头,并可使用WinHttpQueryHeaders对应用程序进行检查。应用程序必须调用WinHttpReceiveResponse才能使用WinHttpQueryDataAvailable和WinHttpReadData访问响应实体(如果有)。
C / C ++语法
BOOL WinHttpReceiveResponse( HINTERNET hRequest, LPVOID lpReserved ); |
PowerBASIC 语法
FUNCTION WinHttpReceiveResponse ( _ BYVAL hRequest AS DWORD, _ BYVAL lpReserved AS DWORD _ ) AS LONG |
参数
hRequest
[in]HINTERNETWinHttpOpenRequest返回并由WinHttpSendRequest发送的句柄。在致电WinHttpReceiveResponse之前等待WinHttpSendRequest已完成此句柄。
lpReserved
[in]必须设置为NULL。
返回值
如果成功,返回一个有效的会话句柄,否则返回NULL。要检索扩展错误信息,请调用GetLastError.返回的错误代码有:
ERROR_WINHTTP_CANNOT_CONNECT
如果与服务器的连接失败返回。
ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW
在解析分块编码的过程中遇到溢出条件时返回。
ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED
当服务器请求客户端认证时返回。
ERROR_WINHTTP_CONNECTION_ERROR
与服务器的连接已重置或终止,或遇到不兼容的SSL协议。例如,WinHTTP版本5.1不支持SSL2,除非客户端专门启用它。
ERROR_WINHTTP_HEADER_COUNT_EXCEEDED
在WinHTTP可以接收的响应中存在更多的头文件时返回。
ERROR_WINHTTP_HEADER_SIZE_OVERFLOW
当接收到的标头大小超过请求句柄的限制时,由WinHttpReceiveResponse返回。
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
所请求的操作不能执行,因为提供的手柄不在正确的状态。
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
提供的手柄类型对于此操作是不正确的。
ERROR_WINHTTP_INTERNAL_ERROR
发生内部错误。
ERROR_WINHTTP_INVALID_SERVER_RESPONSE
服务器响应无法解析。
ERROR_WINHTTP_INVALID_URL
网址无效
ERROR_WINHTTP_LOGIN_FAILURE
登录尝试失败。遇到此错误时,应使用WinHttpCloseHandle关闭请求句柄。必须先创建一个新的请求句柄,然后再重试最初产生此错误的函数。
ERROR_WINHTTP_NAME_NOT_RESOLVED
无法解析服务器名称。
ERROR_WINHTTP_OPERATION_CANCELLED
操作被取消,通常是因为在操作完成之前,请求的操作被关闭。
ERROR_WINHTTP_REDIRECT_FAILED
重定向失败,因为方案已更改或所有尝试重定向失败(默认为五次尝试)。
ERROR_WINHTTP_RESEND_REQUEST
WinHTTP功能失败。可以在相同的请求句柄上重试所需的功能。
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
传入响应超过内部WinHTTP大小限制时返回。
ERROR_WINHTTP_SECURE_FAILURE
在服务器发送的安全套接字层(SSL)证书中发现一个或多个错误。要确定遇到什么类型的错误,请检查状态回调函数中的WINHTTP_CALLBACK_STATUS_SECURE_FAILURE通知。有关详细信息,请参阅WINHTTP_STATUS_CALLBACK.
ERROR_WINHTTP_TIMEOUT
请求已超时。
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
URL指定了除“http:”或“https:”之外的方案。
ERROR_NOT_ENOUGH_MEMORY
没有足够的内存来完成请求的操作。(Windows错误代码)
备注
即使在异步模式下使用WinHTTP(即,在WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数可以同步或异步操作。如果此函数返回FALSE,则此函数失败,您可以调用GetLastError获取扩展错误信息。如果此函数返回TRUE,则应用程序应该期望WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE完成回调,表示成功,或者WINHTTP_CALLBACK_STATUS_REQUEST_ERROR完成回调,表示该操作异步完成但失败。
如果已经使用WinHttpSetStatusCallback安装了状态回调函数,那么在WinHttpSetStatusCallback的dwNotificationFlags参数中设置的以下通知的那些指示接收到响应的进程:
· | WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE |
· | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED |
· | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE |
· | WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE |
· | WINHTTP_CALLBACK_STATUS_REDIRECT |
如果服务器关闭连接,还将报告以下通知,前提是它们已在WinHttpSetStatusCallback的dwNotificationFlags参数中设置:
· | WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION |
· | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED |