您好我正在尝试使用Camel-SOAP组件创建soap消息来调用.Net SOAP 1.2服务。 它没有工作,因为SoapJaxbDataFormat没有放置SOAP操作,我能够使用SOAPUI测试和调用服务,我在SOAPUI生成的请求中看到带有操作的soap标头已填写。 如何填写行动?
SoapJaxbDataFormat soapDF = new SoapJaxbDataFormat("xx.zzz.yy", new ServiceInterfaceStrategy(DpoService.class, true));
soapDF.setVersion("1.2");
soapDF.setNamespacePrefixRef(NAMESPACE_MAPPING_BEAN_NAME);
from("direct:quote")
.marshal(soapDF)
.log("${body}")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/soap+xml;charset=UTF-8;action=\"http://example.com/services/DpoServiceContract/GetPof\""))
.to("http://localhost:7898/DpoService.svc");
我使用这种方法的原因是因为CFX和WSImport生成的客户端代码不起作用。 我能够使用速度模板调用服务来生成SOAP消息。
感谢您的帮助。
答案 0 :(得分:0)
您可以从邮件头设置SOAP操作,如下所示:
exchange.getIn().setHeader(Exchange.SOAP_ACTION, "SOAPACTION");