WsSendMessage 函数 (webservices.h)

使用序列化在通道上发送消息以写入 body 元素。

语法

HRESULT WsSendMessage(
  [in]           WS_CHANNEL                   *channel,
  [in]           WS_MESSAGE                   *message,
  [in]           const WS_MESSAGE_DESCRIPTION *messageDescription,
  [in]           WS_WRITE_OPTION              writeOption,
                 const void                   *bodyValue,
  [in]           ULONG                        bodyValueSize,
  [in, optional] const WS_ASYNC_CONTEXT       *asyncContext,
  [in, optional] WS_ERROR                     *error
);

参数

[in] channel

要发送消息的通道。

[in] message

要用于发送的消息对象。

消息对象必须位于 WS_MESSAGE_STATE_EMPTYWS_MESSAGE_STATE_INITIALIZED 中。

[in] messageDescription

WS_MESSAGE_DESCRIPTION的操作字段用作消息的操作标头。 如果不需要任何操作,则此字段可能为 NULL

WS_MESSAGE_DESCRIPTION的 bodyElementDescription 字段用于序列化消息正文。 如果不需要正文元素,则此字段可能为 NULL 。 有关如何使用 bodyElementDescription 序列化值的信息,请参阅 WsWriteBody

[in] writeOption

是否需要 body 元素,以及如何分配值。 仅当需要 body 元素时,才使用此选项。 有关详细信息,请参阅 WS_WRITE_OPTIONWsWriteBody

bodyValue

要在消息正文中序列化的值。

[in] bodyValueSize

要序列化的值的大小(以字节为单位)。

[in, optional] asyncContext

有关如何异步调用函数的信息;如果同步调用,则为 NULL

[in, optional] error

指定在函数失败时应存储其他错误信息的位置。

返回值

此函数可以返回其中一个值。

返回代码 说明
WS_S_ASYNC
异步操作仍处于挂起状态。
WS_E_OPERATION_ABORTED
操作已中止。
WS_E_INVALID_OPERATION
由于 对象的当前状态,不允许此操作。
WS_E_ENDPOINT_NOT_FOUND
远程终结点不存在或找不到。
WS_E_ENDPOINT_ACCESS_DENIED
远程终结点拒绝访问。
WS_E_ENDPOINT_DISCONNECTED
与远程终结点的连接已终止。
WS_E_ENDPOINT_FAILURE
远程终结点无法处理请求。
WS_E_ENDPOINT_NOT_AVAILABLE
远程终结点当前未在此位置使用。
WS_E_ENDPOINT_TOO_BUSY
由于重载,远程终结点无法处理请求。
WS_E_ENDPOINT_UNREACHABLE
无法访问远程终结点。
WS_E_INVALID_ENDPOINT_URL
终结点地址 URL 无效。
WS_E_INVALID_FORMAT
输入数据的格式不是预期的,或者没有预期的值。
WS_E_OPERATION_TIMED_OUT
该操作未在分配的时间内完成。
WS_E_PROXY_ACCESS_DENIED
HTTP 代理服务器拒绝访问。
WS_E_PROXY_FAILURE
HTTP 代理服务器无法处理请求。
WS_E_QUOTA_EXCEEDED
超出配额。
WS_E_SECURITY_VERIFICATION_FAILURE
对于收到的数据,安全验证未成功。
WS_E_SECURITY_SYSTEM_FAILURE
Windows Web Services 框架中的安全操作失败。
WS_E_SECURITY_TOKEN_EXPIRED
服务器拒绝了安全令牌,因为它已过期。
WS_E_PROXY_REQUIRES_BASIC_AUTH
HTTP 代理服务器需要 HTTP 身份验证方案“basic”。
WS_E_PROXY_REQUIRES_DIGEST_AUTH
HTTP 代理服务器需要 HTTP 身份验证方案“digest”。
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
HTTP 代理服务器需要 HTTP 身份验证方案“协商”。
WS_E_PROXY_REQUIRES_NTLM_AUTH
HTTP 代理服务器需要 HTTP 身份验证方案“NTLM”。
WS_E_SERVER_REQUIRES_BASIC_AUTH
远程终结点需要 HTTP 身份验证方案“基本”。
WS_E_SERVER_REQUIRES_DIGEST_AUTH
远程终结点需要 HTTP 身份验证方案“digest”。
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
远程终结点需要 HTTP 身份验证方案“协商”。
WS_E_SERVER_REQUIRES_NTLM_AUTH
远程终结点需要 HTTP 身份验证方案“NTLM”。
CERT_E_EXPIRED
根据当前系统时钟或签名文件中的时间戳进行验证时,所需的证书不在有效期内。
CERT_E_CN_NO_MATCH
证书 CN 名称与传递的值不匹配。
CERT_E_UNTRUSTEDROOT
已处理的证书链,但在信任提供程序不信任的根证书中终止。
CERT_E_WRONG_USAGE
该证书对于请求的用法无效。
CRYPT_E_REVOCATION_OFFLINE
吊销功能无法检查吊销,因为吊销服务器已脱机。
E_OUTOFMEMORY
内存不足。
E_INVALIDARG
一个或多个参数无效。
其他错误
此函数可能会返回上面未列出的其他错误。

注解

若要在消息中包含自定义标头,请使用 WS_BLANK_MESSAGE 初始化消息 WsInitializeMessage,然后在调用此函数之前使用 WsAddCustomHeader 添加标头。

要求

   
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 webservices.h
Library WebServices.lib
DLL WebServices.dll