我正在使用Spring-WS调用SOAP Web服务.有问题的webservice要求我在SOAP头中传递一些信息,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<CustomHeaderElement>
<clientID>xyz</clientID>
<wsdlVersion>1.0</wsdlVersion>
<serviceType>ExampleService_v1</serviceType>
</CustomHeaderElement>
</soapenv:Header>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
我已经弄清楚如何使用顶级CustomHeaderElement,但我没有在Spring-WS API中看到任何允许我添加子元素的内容.这是我到目前为止:
WebServiceTemplate template = ...;
template.marshalSendAndReceive(request, new WebServiceMessageCallback(){
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException{
SoapMessage soapMessage = (SoapMessage)message;
SoapHeader soapHeader = soapMessage.getSoapHeader();
QName qName = new QName("CustomHeaderElement");
SOAPHeaderElement headerElement = soapHeader.addHeaderElement(qName);
//would like to do something like headerElement.addChild(clientIdNode);
}
});
Run Code Online (Sandbox Code Playgroud)
问题是headerElement似乎没有暴露任何实际添加子的方法.我知道我可以添加一个属性,但这不是我需要的服务调用.有谁知道如何将必要的子元素添加到我的自定义标题?
将空括号值分配给Java中的String时会发生什么?
String s = "";
Run Code Online (Sandbox Code Playgroud)
对象引用变量s是否引用堆内存中携带String值为nothing的对象?
是什么让我问这个问题是当打印对象的哈希码时我得到零,这对我来说没有意义!
System.out.println("hash code is = " + s.hashCode());
Run Code Online (Sandbox Code Playgroud)
哈希码= 0