如何使用SoapJaxbDataFormat设置SoapAction

时间:2014-12-07 23:11:16

标签: web-services soap apache-camel

您好我正在尝试使用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消息。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以从邮件头设置SOAP操作,如下所示:

exchange.getIn().setHeader(Exchange.SOAP_ACTION, "SOAPACTION");