httpReceiveRequestEntityBody 函数 (http.h)
HttpReceiveRequestEntityBody 函数接收指定 HTTP 请求的其他实体正文数据。
语法
HTTPAPI_LINKAGE ULONG HttpReceiveRequestEntityBody(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] ULONG Flags,
[out] PVOID EntityBuffer,
[in] ULONG EntityBufferLength,
[out, optional] PULONG BytesReturned,
[in, optional] LPOVERLAPPED Overlapped
);
参数
[in] RequestQueueHandle
要从中检索指定实体正文数据的请求队列的句柄。 创建请求队列,并通过调用 HttpCreateRequestQueue 函数返回其句柄。
Windows Server 2003 SP1 和 Windows XP SP2: 请求队列的句柄由 HttpCreateHttpHandle 函数创建。
[in] RequestId
包含检索到的实体正文的 HTTP 请求的标识符。 通过调用 HttpReceiveHttpRequest 函数,在 HTTP_REQUEST 结构的 RequestId 成员中返回此值。 不能 HTTP_NULL_ID此值。
[in] Flags
此参数可以是以下标志值。
Windows Server 2003 SP1 和 Windows XP SP2: 此参数为保留参数,必须为零。
值 | 含义 |
---|---|
|
指定缓冲区将填充一个或多个实体主体,除非没有要复制的剩余实体主体。 |
[out] EntityBuffer
指向接收实体主体数据的缓冲区的指针。
[in] EntityBufferLength
pBuffer 参数指向的缓冲区的大小(以字节为单位)。
[out, optional] BytesReturned
可选。 指向变量的指针,该变量接收 pBuffer 缓冲区中返回的实体正文数据的大小(以字节为单位)。
使用 pOverlapped 进行异步调用时,请将 pBytesReceived 设置为 NULL。 否则,当 pOverlapped 设置为 NULL 时, pBytesReceived 必须包含有效的内存地址,并且不能设置为 NULL。
[in, optional] Overlapped
对于异步调用,请将 pOverlapped 设置为指向 OVERLAPPED 结构;对于同步调用,请将其设置为 NULL。
同步调用会阻塞,直到检索到实体主体数据,而异步调用会立即返回 ERROR_IO_PENDING 然后调用应用程序使用 GetOverlappedResult 或 I/O 完成端口来确定操作何时完成。 有关使用 OVERLAPPED 结构进行同步的详细信息,请参阅 同步和重叠输入和输出。
返回值
如果函数成功,则返回值 NO_ERROR。
如果异步使用函数,则返回值 ERROR_IO_PENDING 指示下一个请求尚未就绪,稍后会通过正常的重叠 I/O 完成机制进行检索。
如果函数失败,则返回值为以下错误代码之一。
值 | 含义 |
---|---|
|
提供的一个或多个参数以不可用的形式提供。 |
|
已完全检索指定的实体正文;在这种情况下, pBytesReceived 指向的值没有意义,不应检查 pBuffer 。 |
|
调用应用程序在调用此函数之前未调用 HttpInitialize 。 |
|
WinError.h 中定义的 系统错误代码 。 |
注解
为了检索整个实体正文,应用程序应调用 HttpReceiveRequestEntityBody,传入新的缓冲区,直到函数返回 ERROR_HANDLE_EOF。 只要成功复制了充满实体主体数据的缓冲区,并且仍有更多实体主体数据等待检索,该函数就会返回 NO_ERROR。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista、Windows XP SP2 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | http.h |
Library | Httpapi.lib |
DLL | Httpapi.dll |