2014-12-07 57 views
0

嗨我想使用Camel-SOAP組件創建soap消息來調用.net SOAP 1.2服務。 因爲SoapJaxbDataFormat沒有放置SOAP操作,所以我無法正常工作,我能夠使用SOAPUI測試和調用服務,並且在由SOAPUI生成的請求中看到帶有操作的SOAP標頭被填充。 如何獲取行動填補了?如何使用SoapJaxbDataFormat設置SoapAction

 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生成的客戶端代碼不起作用。 我能夠使用velocity模板來調用服務來生成SOAP消息。

謝謝您的幫助。

回答

0

您可以從您的消息頭中的SOAP動作,就像這樣:

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

謝謝。這是很大的幫助。 – 2016-05-11 09:12:17