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: 此参数为保留参数,必须为零。

含义
HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER
指定缓冲区将填充一个或多个实体主体,除非没有要复制的剩余实体主体。

[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 完成机制进行检索。

如果函数失败,则返回值为以下错误代码之一。

含义
ERROR_INVALID_PARAMETER
提供的一个或多个参数以不可用的形式提供。
ERROR_HANDLE_EOF
已完全检索指定的实体正文;在这种情况下, pBytesReceived 指向的值没有意义,不应检查 pBuffer
ERROR_DLL_INIT_FAILED
调用应用程序在调用此函数之前未调用 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

另请参阅

HTTP 服务器 API 版本 1.0 函数

HTTP 服务器示例应用程序

HTTP_REQUEST

HttpReceiveHttpRequest

HttpSendHttpResponse

HttpSendResponseEntityBody