云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云数据库_数据库公式_优惠

小七 141 0

SOAP消息由SOAP头和由SOAP信封包裹的SOAP主体组成。可以在集成流中访问和修改SOAP主体。在2019年4月14日发布的版本中,还可以访问发送方通道接收的SOAP头,并设置要发送到接收方系统的SOAP头。

本博客描述了如何在集成流中处理SOAP头。

示例集成流

该示例显示了如何在请求和响应中设置SOAP头以及如何在集成流中对它们进行评估。我使用一个集成过程(integrationprocessi)来构建一个包含额外SOAP头的消息。此过程由SOAP发送方通道接收的SOAP消息启动。因此,人工智能的技术有哪些,您可以使用SOAPUI之类的工具创建具有任意SOAP主体的SOAP消息,并将其发送到此通道。启动场景的另一种可能性是使用计时器步骤和内容修饰符在集成流中设置XML有效负载。

第二个集成流(集成过程II)接收带有添加的SOAP头的请求消息,评估内容并为发送回启动集成进程I的响应添加另一个SOAP头。还将评估响应头。

除了使用两个集成进程,还可以使用两个单独的集成流。

消息接口中有三种新方法可用于处理SOAPheaders:

Method getSoapHeaders:此方法返回由SoapHeader类型的对象表示的SOAP头的列表(类型ArrayList)。此列表在通道接收到消息后填写。方法setSoapHeaders:此方法可用于在发送消息之前在请求或响应消息中设置SOAP头。使用的类型与setSoapHeader中的类型相同:ArrayList对象中的SoapHeader实例作为参数传递。方法clearSoapHeaders:此方法可用于删除接收到的Soap头。因此,它们不会被传播以避免不期望的后果。无需设置参数,方法不返回结果

前提

由于对象复杂(SOAP头基于XML),SOAP头处理只能在脚本步骤中完成。因此,了解本博客的各个方面需要一些关于Groovy脚本以及如何在集成流中创建脚本步骤的基本知识。

集成过程I

SOAP发送者可以是SOAP UI客户端或任何其他可以发送SOAP消息的工具/系统,它会向集成过程I发送消息。现在我想添加一个SOAP header将原始有效负载(包括添加的头)发送到SOAP接收器receiver。请注意,我使用一个请求-应答呼叫来接收系统。原因是我想评估接收系统返回的响应。为了简单起见,我使用了一个没有WSDL配置的接收器通道。

让我们假设我想要或者我必须通过SOAP头向接收器系统发送一个消息标识符。我使用为saprm协议定义的SOAP头。我添加了脚本步骤"SetRequestSoapHeader",云服务器比较,通过Groovy脚本添加这个头:

目标是创建类的实例com.sap.gateway网关.ip.core.customdev.工具SoapHeader. 我使用类的构造函数,它允许将头作为字符串传递。为了简单起见,我在设置messageId的地方使用了一个常量字符串。可以使用字符串操作设置变量messageId。请注意,必须屏蔽双引号(""),如本例所示。如果获取报头的操作更复杂,那么使用DOM解析器/呈现器来创建报头并设置元素实例而不是字符串实例将是有益的。通过创建的实例来设置标识标头类型的限定名javax.xml.namespace名称空间.QName。已设置SAP RM message id头的值。MustUnderstand设置为false。这意味着如果接收者不知道报头,他可以忽略它。如果我在我们的场景中将MustUnderstand设置为true,那么我必须在集成过程II的发送方通道的WSDL中声明头。Actor设置为空字符串。在集成流中,Actor不是由通道评估的,因此可以自由地用于您自己的目的。header对象被添加到数组列表中,消息接口的setSoapHeaders方法被调用。仅此而已。在发送消息之前,您可以在集成流中的任何位置使用相同的方法添加其他头。

在我现在进入集成过程II查看如何评估此头之前,让我继续此过程并展示如何处理响应SOAP头。如前所述,我使用请求-应答呼叫来联系接收方系统。这意味着我可以在调用接收器通道并处理响应之后继续建模流。

脚本步骤GetResponseSoapHeader正在执行:

消息接口的方法getSoapHeaders返回数组列表中的头。首先执行一些检查。应该正好有一个SOAP头(页眉.大小()!=1),云计算和大数据的区别,则限定名(qname)应为预期名称,名称和命名空间必须匹配。我再次对响应和请求使用相同的头。这意味着我收到一个消息idcom.sap.gateway网关.ip.core.customdev.工具SoapHeader实例现在是元素实例。方法getTextContent of Element返回头内容的字符串表示形式,在本例中返回消息id。对于更复杂的头结构,元素只是复杂DOM树的起点,必须使用DOM解析器API来获取所需的信息。作为一个例子,我从结果中设置了集成流头SapMessageIdEx。最后一步,我删除通过调用消息接口的clearSoapHeaders方法接收的SOAP头。因此,大数据时代纪录片,标头不会传播回发送方。

集成过程II

消息通过SOAP发送方通道接收。这里没有配置WSDL。作为第一步,在脚本步骤GetRequestSoapHeader中计算SOAP头。