これについて SO で解決策を探しましたが、私の場合にはどれも当てはまらないようです。サード パーティ ドメインへのサービス呼び出しを行う必要があるアプリケーションがあります。このサービス呼び出しを行うためにジャージー クライアントを使用しています。この呼び出しを行うためのコードは次のとおりです。
ClientResponse resp = resourceWithParams.
header("Authorization", getAccessKeyId() + ":" +
hmacSha1.toUpperCase()).
post(ClientResponse.class,"");
resourceWithParams
ジャージの Web リソースはどこにありますか。であってもPOST
、Web サービスはクエリ文字列と空の本文を想定していることに注意してください。疑わしいデザインかもしれませんが、それは私たちが取り組まなければならないものです.
このセットアップは、ローカル マシンと preprod サーバーで問題なく動作しています。ただし、本番サーバーでは例外が発生します。
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
以下に、私を正しい方向に向けるのに役立ついくつかのポイントがあります。
1) 製品サーバーのコマンド ラインで使用して Web サービスに要求を送信すると、有効な応答が得られるため、curl
ファイアウォールの問題はないようです。これは、Web アプリケーションを介して、つまり jersey クライアントを使用する Java コードを介して試行した場合にのみ発生します。
2) prod サーバーにプロキシが設定されていない
3) localhost から正常に動作します。
4)Rest Webサービスはhttpsを使用し、正しい証明書がサーバーにインストールされています。これは、本番環境でWebサービスが正常にcurl
機能するという事実によって証明されています.
問題が何であるか、どこから調べ始めるべきかについてのアイデアはありますか?
編集:
前述のように、https を使用して Web サービスに接続していました。代わりに http を使用すると、機能しているように見えます。