我需要从我的 apache camel 调用异步 Web 服务。
为此,当我调用终端系统时,我需要从我的 camel-cxf.xml 的标头中传递replyTo Address。
如果我将此作为 SOAP UI 的标头传递,它对我来说工作正常,并且终端系统会向我发送回复“xxxx”地址。
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:ReplyTo> <wsa:Address>xxxx</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>urn:uuid:111342</wsa:MessageID> </soapenv:Header>
但我需要从我的代码中设置这个属性。
在我的处理方法中,我这样做了
QName qname1=QName.valueOf("{http://www.w3.org/2005/08/addressing}ReplyTo");
SoapHeader header1 = new SoapHeader(qname1, "xxxx");
String requestHeader = "<wsa:ReplyTo xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"> "
+ "<wsa:Address xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">xxxx</wsa:Address>"
+ "</wsa:ReplyTo>"
+ "<wsa:MessageID xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">urn:uuid:111342</wsa:MessageID>";
final List<SoapHeader> headers=new ArrayList<SoapHeader>();
headers.add(new SoapHeader(qname1,DOMUtils.readXml(new StringReader(requestHeader)).getDocumentElement()));
exchange.getIn().setHeader(SoapHeader.HEADER_LIST,headers);
但它不起作用..任何人都可以给我一个合适的解决方案吗?