勇芳软件工作室.汉化:  WinHTTP Reference > WinHTTP Functions >

WinHttpReceiveResponse

Previous pageReturn to chapter overviewNext page

描述

 

WinHttpReceiveResponse功能等待接收由WinHttpSendRequest发起的HTTP请求的响应。WinHttpReceiveResponse成功完成后,系统已收到状态代码和响应标头,并可使用WinHttpQueryHeaders对应用程序进行检查。应用程序必须调用WinHttpReceiveResponse才能使用WinHttpQueryDataAvailableWinHttpReadData访问响应实体(如果有)。

 

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安装了状态回调函数,那么在WinHttpSetStatusCallbackdwNotificationFlags参数中设置的以下通知的那些指示接收到响应的进程:

 

·WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE
·WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED
·WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
·WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE
·WINHTTP_CALLBACK_STATUS_REDIRECT

 

如果服务器关闭连接,还将报告以下通知,前提是它们已在WinHttpSetStatusCallbackdwNotificationFlags参数中设置:

 

·WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION
·WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED