gpt4 book ai didi

java - 将 SoapHeader 添加到 org.springframework.ws.WebServiceMessage

转载 作者:IT老高 更新时间:2023-10-28 13:55:50 26 4
gpt4 key购买 nike

如何将对象添加到 org.springframework.ws.WebServiceMessage

的 soap header 中

这是我希望最终得到的结构:

 <soap:Header>
<credentials xmlns="http://example.com/auth">
<username>username</username>
<password>password</password>
</credentials>
</soap:Header>

最佳答案

基本上,您需要使用 WebServiceMessageCallback在您的客户端中在消息创建之后但在发送之前对其进行修改。 @skaffman 已经非常准确地描述了其余代码,因此整个内容可能如下所示:

public void marshalWithSoapActionHeader(MyObject o) {

webServiceTemplate.marshalSendAndReceive(o, new WebServiceMessageCallback() {

public void doWithMessage(WebServiceMessage message) {
try {
SoapMessage soapMessage = (SoapMessage)message;
SoapHeader header = soapMessage.getSoapHeader();
StringSource headerSource = new StringSource("<credentials xmlns=\"http://example.com/auth\">\n +
<username>"+username+"</username>\n +
<password>"+password"+</password>\n +
</credentials>");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(headerSource, header.getResult());
} catch (Exception e) {
// exception handling
}
}
});
}

就个人而言,我发现 Spring-WS 很难满足这样的基本需求,他们应该修复 SWS-479 .

关于java - 将 SoapHeader 添加到 org.springframework.ws.WebServiceMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com