可能重复:
将自定义 Soap 标头添加到 Web 服务请求
我正在尝试使用从 WSDL 文件生成的 java 客户端调用 Web 服务。有要求在<soap:Header>
里面添加<soap:Envelope>
。当我在eclipse中生成客户端并调用服务时,请求消息是,
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Body>
<tem:GetEntityXml>
<!--Optional:-->
<tem:entityGuid>f949d2fe-d5a2-4115-a920-e85343adcf1a</tem:entityGuid>
</tem:GetEntityXml>
</soap:Body>
</soap:Envelope>
在我想要的地方,
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>http://tempuri.org/xxx/HelloWorld</wsa:Action><wsa:To>https://xxx/yyy.svc</wsa:To>
</soap:Header>
<soap:Body>
<tem:GetEntityXml>
<!--Optional:-->
<tem:entityGuid>f949d2fe-d5a2-4115-a920-e85343adcf1a</tem:entityGuid>
</tem:GetEntityXml>
</soap:Body>
</soap:Envelope>
我试图在_call.invoke()
方法之前修改 SOAP 信封。
org.apache.axis.message.SOAPHeaderElement she=new org.apache.axis.message.SOAPHeaderElement("http://www.w3.org/2005/08/addressing",null);
she.addNamespaceDeclaration("wsa","http://www.w3.org/2005/08/addressing");
SOAPElement node=she.addChildElement("Action","wsa");
node.addTextNode("http://tempuri.org/xxx/HelloWorld");
System.out.println("2");
SOAPElement node2=she.addChildElement("To","wsa");
node2.addTextNode("https://xxx/yyy.svc");
_call.getMessageContext().getCurrentMessage().getSOAPEnvelope().addHeader(she);;
System.out.println(she);
_call.addHeader(she);
由于我对 Web 服务非常陌生,因此欢迎每个建议。
请帮助我根据需要创建和格式化标题。