我试图调用需要SOAP Header的SOAP 1.2 WS。
我使用名为SAP Hana Cloud Integration的集成设计器,我收到完整的XML消息但没有标题,接收者系统必须接收MessageId才能接受数据。脚本已满,我从online documentation中选择了一个,我根据自己的需要进行了调整:
在启用WS-A寻址后,我设法使用SOAP UI使其工作,并使其生成随机UUID
在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, 胺
答案 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 ......