2017-09-25 3 views
0

に、サーバー上にIOExceptionがスローされますが、私はちょうど以下のようにhttpsClient Postメソッドのコードに取り組んでIOExceptionに直面していたRegd httpclient.executeMethod(request);実行に対し、私たちのブログを検索しようとした地元の日食

、いくつかのポインタがとても投稿見つけることができませんでした。小さなポインタが役立つかもしれません、詳細な答えは必要ありません。私はコモンズ - HttpClientを3.1.jarと日食にこのコードを実行しています

HttpClient httpclient = new HttpClient();   
       request = new PostMethod("https://ref.net/auth/token?grant_type=password");    
       request.setRequestHeader("Authorization", "Basic KolokYrZTo="); 
       request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

      NameValuePair[] data = { 
        new NameValuePair("username", "abc"), 
        new NameValuePair("password", "123"), 
        new NameValuePair("grant_type", "password"), 
      }; 

      request.setRequestBody(data); 
      httpclient.executeMethod(request); 
} catch (IOException e) { 
        e.printStackTrace(); 
        logger.error("IOException in post()...."+e.getMessage());     
       } 

それは完全に正常に動作が、私は、サーバーへの私のコードを移動して同じコードを実行しようとすると、httpclient.executeMethod(request);は、IOExceptionがスローされます。驚いたことにe.printStackTrace();は、eオブジェクト自体が印刷されませんnull この例外をキャッチしてこれをデバッグするには、ここで何か間違っています。

私のローカルで私はJava1.8を持っていますが、コンパイラの準拠レベルで実行しています 1.6-サーバー上。私は1.8と1.6の両方の同じエラーを実行しようとしました。

+0

私たちはサーバー上で構成しなければならないかもしれないローカルの証明書に関連していますか、私は証明書を追加しませんでした。 –

+0

あなたが言うように 'e'が本当に'ヌル 'その後、 'e.printStackTrace'を実行するときに' NullPointerException'をスローするので、これが実際に起こっているのか疑問があります。私は、あなたがあなたのログに表示されているものを参照していると仮定します。しかし、そこに 'e.getMessage()'を追加するだけです。これはnullかもしれません。完全な例外をログに記録して(例外の型とスタックトレースも同様に記録されます)、ここに追加してください。 – Lothar

+0

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲットへの有効な証明書パスが見つかりません at sun.security.ssl.Alerts .getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1937) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) –

答えて

0

コメントとして追加したエラーメッセージでは、ここで何が起こっているのかはっきりしています。接続しているサーバーが、コマンドシェルで使用しているJVMが認識していないサーバー証明書を使用しています。

commons httpclientと組み合わせてこのエラーメッセージを検索した場合は、数ページのディスカッションがあります。 1つはStackOverflowです。

関連する問題