gpt4 book ai didi

java - 如何将 xmlbean 文档元素添加到soap header spring-ws

转载 作者:行者123 更新时间:2023-12-01 11:25:39 25 4
gpt4 key购买 nike

我正在尝试使用 spring-ws 访问 Web 服务,但 Web 服务生产者需要肥皂 header 中的自定义元素。我对网络服务非常陌生,并且在尝试将值注入(inject)肥皂头时遇到困难。我正在使用 XMLBeans 从 xsd 转换为 java,并进行编码和解码。我已经构建了 xmlbean 文档并设置了自定义 header 元素的所有值,我只需要获取该文档,甚至可能只是将附加到该文档的元素注入(inject)到soap header 中。下面列出的是soapui中的wsdl(只是标题)(我用来学习和进行初始测试的)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" xmlns:v11="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" xmlns:v12="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0">
<soapenv:Header>
<v1:UPSSecurity>
<v1:UsernameToken>
<v1:Username>name</v1:Username>
<v1:Password>password</v1:Password>
</v1:UsernameToken>
<v1:ServiceAccessToken>
<v1:AccessLicenseNumber>accesskey</v1:AccessLicenseNumber>
</v1:ServiceAccessToken>
</v1:UPSSecurity>
</soapenv:Header>

最佳答案

我找到了一个可行的解决方案,并且代码不多。我不得不放弃使用 xmlbeans,只创建元素,但至少功能已经存在并且 Web 服务调用可以工作。

@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException
{
try
{
SOAPMessage soapMessage = ((SaajSoapMessage)message).getSaajMessage();
SOAPHeader header = soapMessage.getSOAPHeader();
SOAPHeaderElement soapHeaderElement = header.addHeaderElement(new QName("http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0", "UPSSecurity", "v1"));
SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
envelope.addNamespaceDeclaration("v1", "http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0");

SOAPElement usernameToken = soapHeaderElement.addChildElement("UsernameToken", "v1");
SOAPElement username = usernameToken.addChildElement("Username", "v1");
SOAPElement password = usernameToken.addChildElement("Password", "v1");

SOAPElement serviceAccessToken = soapHeaderElement.addChildElement("ServiceAccessToken", "v1");
SOAPElement accessLicenseNumber = serviceAccessToken.addChildElement("AccessLicenseNumber", "v1");

username.setTextContent("username");
password.setTextContent("password");
accessLicenseNumber.setTextContent("key");
}
catch (SOAPException e)
{
e.printStackTrace();
}
}

关于java - 如何将 xmlbean 文档元素添加到soap header spring-ws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30823068/

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