Tôi đang gọi một dịch vụ web SOAP với Spring-WS. Webservice trong câu hỏi đòi hỏi tôi phải vượt qua một số thông tin trong tiêu đề SOAP như ở đây:Thêm các phần tử con vào tiêu đề SOAP tùy chỉnh trong Spring-WS
<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>
Tôi đã tìm ra cách để có CustomHeaderElement cấp cao nhất, nhưng tôi không thấy bất cứ điều gì vào mùa xuân-WS API cho phép tôi thêm phần tử con. Dưới đây là những gì tôi có cho đến thời điểm này:
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);
}
});
Vấn đề là headerElement dường như không để lộ bất kỳ phương tiện nào thực sự thêm trẻ em. Tôi biết tôi có thể thêm một thuộc tính, nhưng đó không phải là những gì tôi cần cho cuộc gọi dịch vụ này. Có ai biết làm thế nào tôi có thể thêm các yếu tố con cần thiết vào tiêu đề tùy chỉnh của tôi?
Bạn có ý nghĩa gì đó tương tự như bài đăng này không: http://stackoverflow.com/questions/4046075/how-to-add-soap-headers-to-spring-jax-ws-client nơi Biến áp được sử dụng sau khi truyền tin nhắn đến SOAPMessage? Tôi đồng ý rằng nó không thực sự dễ chịu hay thanh lịch. Tôi tự hỏi tại sao. – chris
-1 Không thực sự là câu trả lời. P.S. liên kết được cung cấp bởi @chris có các giải pháp tốt. – kaskelotti
Câu trả lời của bạn, thậm chí được đánh dấu là câu trả lời đúng, không giúp ích gì cho chúng tôi. – marionmaiden