2017-03-23 25 views
-1

私はcamel restからsoap webサービスをjava DSLから呼び出そうとしています。 500のレスポンスコードでサーバーエラーが発生する。camel restからsoap Webサービスを呼び出す方法Java DEL

私はjsonデータで電話を受け取り、私はサードパーティの石鹸サービスに電話しなければなりません。私は石鹸の応答を処理し、json formateで応答を返す必要があります。ここ

は、あなたが実際の誤差はあるもののためにサーバ側で見ている私のコード

{ 
String getCustomerDetailsurl="http://<serverip>/webservice/Service.asmx?op=GetClientDetail&bridgeEndpoint=true"; 

rest("/customers") 
.description("Aviva Mobile sales customer service") 
.consumes("application/json") 
.produces("application/json") 
.post().type(ClientRequest.class) // incomming request data 
.route() 
.from("direct:start") 
//.setHeader(Exchange.HTTP_METHOD, constant("POST")) 
    .process(new CustomerProcessor()).marshal().xstream() 
.to(getCustomerDetailsurl); 

エラー

org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking http://<serverip>/webservice/Service.asmx?op=GetClientDetail with statusCode: 500 
     at org.apache.camel.component.http.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:239) ~[camel-http-2.17.5.jar:2.17.5] 
     at org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:161) ~[camel-http-2.17.5.jar:2.17.5] 
     at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.17.5.jar:2.17.5] 
     at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) ~[camel-core-2.17.5.jar:2.17.5] 
     at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) ~[camel-core-2.17.5.jar:2.17.5] 
     at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) ~[camel-core-2.17.5.jar:2.17.5] 

} 
+0

camel cxfを見てみてください。http://camel.apache.org/cxf.html –

+0

これには多くの理由があります。さらにトラブルシューティングを行い、より詳細な情報を入手してください。 –

答えて

0
  1. です。
  2. tcp monitor(tcpMon)のようなツールを使用して、送信する内容と戻ってくる内容を正確に表示できます。
  3. 実際には、SOAPサービスを使用するには、HTTP経由の生の呼び出しではなく、SOAPクライアントを使用する方がはるかに優れています。 Camel-CXFコンポーネントを見てください。次に、CXFエンドポイントを作成し、.to({cxfEndpointUri})にuriを使用します。 CXFはあなたのためにすべてのSOAP作業を行います。サーバーが必要とする場合の承認のように、インターセプタで少し作業を行う必要があるかもしれません。

P.どのようなExchange.bodyあなたのCustomerProcessorを生成するあなたのコードで?サーバーのSOAPエンベロープには有効ですか?サーバーに契約(WSDL)が必要とするものはすべてありますか?

関連する問題