2012-03-02 90 views
3

的CXF生成客戶端發送以下SOAP請求不從他們身邊返回記錄的命名空間:CXF-CODEGEN生成的客戶端需要在SOAP信封

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <PersonSearch xmlns="http://tlo.com/"> 
      <genericSearchInput> 
       .... 
      </genericSearchInput> 
     </PersonSearch> 
    </soap:Body> 
</soap:Envelope> 

soapUI的請求如下所示,並沒有返回記錄:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tlo="http://tlo.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tlo:PersonSearch> 
     <!--Optional:--> 
     <tlo:genericSearchInput> 
      ... 
     </tlo:genericSearchInput> 
     </tlo:PersonSearch> 
    </soapenv:Body> 
</soapenv:Envelope> 

我看到的唯一區別是,而不是在SOAP信封的命名空間聲明和使用命名空間前綴的默認命名空間聲明。我嘗試了幾種不同的方法來讓CXF生成的客戶端創建相同類型的soap請求。任何人都可以提供一些指針,或者我需要使用其他的東西嗎?

我使用org.apache.cxf:CXF-CODEGEN-插件:2.5.2在JDK 6

+1

兩者都是正確的方式做SOAP消息,但一些服務顯然解釋很奇怪的方式SOAP標準。他們顯然似乎想要通過純粹的字符串操作去除信封,而這種操作是非常錯誤的。什麼服務框架在做服務器端綁定? – 2012-04-17 14:09:38

回答

1

你使用JAXB數據綁定?我能夠通過使用XMLBEANS來解決相同的問題。見DB標誌的WSDL2Java:http://cxf.apache.org/docs/wsdl-to-java.html

我仍然在尋找的不僅僅是改變綁定一個更好的解決方案。

更新20012-04-18:布林和阿貴從CXF用戶郵件列表是如此客氣告訴我CXF的TransformationFeature。在客戶端使用以下代碼適用於我:

 MyService myService = new MyService(); 
     myPort = myService.getMyServiceHttpSoap11Endpoint(); 
     // See http://cxf.apache.org/docs/transformationfeature.html 
     Client client = ClientProxy.getClient(myPort); 

     Map<String, String> outTransformMap = Collections.singletonMap(
       "{http://myNamespace}*", 
       "{http://myNamespace}*"); 
     org.apache.cxf.interceptor.transform.TransformOutInterceptor transformOutInterceptor = 
       new org.apache.cxf.interceptor.transform.TransformOutInterceptor(); 
     transformOutInterceptor.setOutTransformElements(outTransformMap); 
      client.getOutInterceptors().add(transformOutInterceptor); 

我將此與CXF 2.5.2配合使用。根據Aki的2.5.3和2.5.6,你必須使用defaultNamespace屬性。

+0

你能幫助我在這個問題上,http://stackoverflow.com/questions/31181207/how-can-i-add-namespace-decalarations-in-soap-envelope – 2015-07-02 10:09:16