在业务流程中访问 SOAP 标头
对于已定义的和未知的 SOAP 标头,您可以在业务流程中访问 SOAP 标头上下文属性。 有关属性架构和上下文属性的详细信息,请参阅 属性架构。
已定义的 SOAP 标头上下文属性
业务流程中定义的 SOAP 标头上下文属性需要属性架构。 属性架构必须具有目标命名空间 http://schemas.microsoft.com/BizTalk/2003/SOAPHeader
,并且 属性架构基 属性设置为 MessageContextPropertyBase。 属性架构中的每个根元素名称必须与定义的 SOAP 标头的根元素名称匹配。 然后,可以使用属性架构的命名空间和属性名称来访问上下文属性的值。 属性架构的命名空间不同于上面列出的目标命名空间。 尽管属性架构的命名空间可以是任何字符串,但它通常默认为项目的名称。
以下示例演示如何访问属性架构命名空间 SOAPHeader 和属性名称 OrigDest 的 SOAP 标头上下文属性:
stringVar = requestMessageInstance(SOAPHeader.OrigDest);
注意
已定义的 SOAP 标头被视为“in”或“out”标头。 如果向导为请求和响应消息定义的 SOAP 标头相同,则该向导不会在响应中自动返回传入值。 您必须将请求消息的 SOAP 标头上下文属性显式复制到响应消息的 SOAP 标头上下文属性中。
复制传入消息的 SOAP 标头上下文属性
您可以将传入消息的 SOAP 标头上下文属性复制到响应消息的相同 SOAP 标头上下文属性中。
下面的示例显示了如何复制 SOAP 标头上下文属性:
ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);
为 SOAP 响应创建 SOAP 标头时,必须确保您已正确创建 SOAP 标头。 SOAP 适配器不验证 SOAP 标头上下文属性的内容。 如果响应 SOAP 标头的值错误,则 SOAP 适配器不会将此响应消息发送给 Web Services 的使用者。
未知的 SOAP 标头上下文属性
未知的 SOAP 标头上下文属性不需要属性架构。 可以访问此全局上下文属性 SOAP。UnknownHeaders。
以下示例演示如何访问未知的 SOAP 标头上下文属性 SOAP。UnknownHeaders:
stringVar = RequestMessageInstance(SOAP.UnknownHeaders);
上下文属性中包含的值是包含 XML 数据的字符串。 访问此数据的最简单方法是在 消息分配 或 表达式 形状中使用 BizTalk 表达式编辑器,并在 XmlDocument 中加载字符串,并使用 XPATH 查询访问特定字段。 有关在 BizTalk 表达式编辑器中创建 XML 文档的详细信息,请参阅 XLANG-s 语言。
上下文属性与某一特定消息关联。 消息引擎不会自动将请求消息中的已知 SOAP 标头的值映射到响应消息。 为 Web 服务创建响应消息时,必须专门设置 SOAP 标头值。 以下命令是设置 SOAP 标头上下文属性的最简单方法:
ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"
还可以通过创建 XmlDocument 并将 XmlDocument 的字符串值写入上下文属性来实现此 目的 。
注意
如果 为 SOAP。UnknownHeaders 属性为 null,BizTalk 会自动将 SOAP 请求中收到的未知标头返回到 SOAP 响应。 如果 为 SOAP。响应消息上的 UnknownHeaders 上下文属性不为 null,然后 BizTalk 会将该值返回到 SOAP 响应。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈