添加两个Soap标头标签

时间:2017-02-06 16:51:56

标签: web-services groovy soapui soapheader

我试图调用需要SOAP Header的SOAP 1.2 WS。

我使用名为SAP Hana Cloud Integration的集成设计器,我收到完整的XML消息但没有标题,接收者系统必须接收MessageId才能接受数据。脚本已满,我从online documentation中选择了一个,我根据自己的需要进行了调整:

在启用WS-A寻址后,我设法使用SOAP UI使其工作,并使其生成随机UUID enter image description here

在SOAP UI日志中,我发现发送给接收方的消息头如下:

fig_width, fig_height = 0.85, 0.4
f2 = plt.figure(figsize=( fig_width * A4_width, fig_height * A4_height))
plot_figure(f2)
plt.savefig('f2.pdf', format='pdf', bbox_inches='tight')

我尝试使用Groovy创建相同的标头:

<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
   <wsa:MessageID>uuid:8122ffc1-62ee-436c-a284-224e49988013</wsa:MessageID>
   <wsa:Action>http://sap.com/xi/AP/HumanCapitalManagementMasterDataReplication/Global/HumanCapitalManagementMasterDataReplicationEmployeeMasterDataReplicationIn/ReplicateCompleteEmployeeMasterDataRequest</wsa:Action>
</soap:Header>

但它转而认为在标题下设置两个根节点是不可能的,这里是错误消息: 原因:org.w3c.dom.DOMException:HIERARCHY_REQUEST_ERR:尝试插入不允许的节点。

有关如何实现这一目标的任何想法?谢谢 ! BR, 胺

1 个答案:

答案 0 :(得分:0)

通过HCI中的groovy脚本:

import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {

       //Headers 
       def map = message.getHeaders();
       def value = map.get("oldHeader");
       message.setHeader("oldHeader", value + "modified");
       message.setHeader("newHeader", "yourValue");

       return message;
}

在设计器Web应用程序(不是ECLIPSE)中简单得多:

内容修饰符 - &GT;发送请求之前的消息标题 - &gt; YourHeader |常数| java.lang.String | YourValue ......