1

CXF ライブラリを使用して SOAP クライアントを作成しています。ここでの要件は、SOAP 要求をプロキシとして機能する別の Web サービスに転送することです。次のコードを使用して、SOAP クライアントでプロキシを設定しました。

WebService ss = new WebService();

WebServiceSoap port=ss.WebServiceSoap();

Client client = ClientProxy.getClient(port);

HTTPConduit http = (HTTPConduit) client.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setProxyServer(System.getProperty("http.proxyHost","proxyserver.com"));
httpClientPolicy.setProxyServerPort(Integer.valueOf(System.getProperty("http.proxyPort","8080")).intValue());

httpClientPolicy.setConnectionTimeout(36000);

http.setClient(httpClientPolicy);

byte[] fileContent={'b','b'};

String res=port.submiFile(fileContent");

しかし、このコードは以下のエラーをスローしています

「java.io.IOException: プロキシを介してトンネリングできません。プロキシは「HTTP/1.1 405 メソッドが許可されていません」を返します。

私の調査によると、CXFライブラリが「CONNECT」を使用しているため、このエラーが発生しています

SOAPリクエストをトンネリングするhttpメソッドですが、このCONNECTメソッド

実装はプロキシ サーバー (proxyserver.com) では利用できません。現在はプロキシです。

サーバー チームは、"GET" および "POST" HTTP メソッドのみを提供できると言っています。

これは、SOAP リクエストを手動で作成し、POST または GET メソッドを使用して送信する必要があることを意味します。しかし、これは、SOAP リクエストを手動で作成することを避けたい方法です。

だから私の質問は、これを取り除く方法はありますか、それともオーバーライドできますか

「コネクト」方式?どの回答リンクも参考になります。また、詳細については添付ファイルを参照してください。

4

1 に答える 1