2016-10-31 23 views
0

なっHTTPクライアントは、私は私のJavaコードからSSLハンドシェイク例外を取得し、SSLハンドシェイク例外

取得するときに私のJavaファイルが

package com.mypackage.rest.client; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class ClientGet { 

public static void main(String[] args) { 

    try { 

     URL url = new URL(
       "https://sandbox.tangocard.com/raas/v1.1/orders/116-101338692-28");   
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("Accept", "application/json"); 
     conn.setRequestProperty("Platform_Name", "CareHeroTest"); 
     conn.setRequestProperty("Platform_key","8heOCfIEJHgarCraHuvqQ6vcajgu8A1r7YU4jUFLjxNtwbuREfBuO54E"); 
     conn.setRequestProperty("Authorization","Basic VGFuZ29UZXN0OjV4SXRyM2RNRGxFV0FhOVM0czd2WWg3a1EwMWQ1U0ZlUFBVb1paaUsvdk1mYm8zQTVCdkpMQW1ENHRJPQ=="); 

     if (conn.getResponseCode() != 200) { 
      throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); 
     } 

     BufferedReader br = new BufferedReader(new InputStreamReader(
       (conn.getInputStream()))); 

     String output; 
     System.out.println("Output from Server .... \n"); 
     while ((output = br.readLine()) != null) { 

      System.out.println(output); 
     } 

     conn.disconnect(); 

    } catch (MalformedURLException e) { 

     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

同じサードパーティのWebサービス(タンゴ)が働く

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) 
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
at java.net.HttpURLConnection.getResponseCode(Unknown Source) 
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source) 
at com.mkyong.rest.client.NetClientGet.main(NetClientGet.java:25) 
Caused by: java.io.EOFException: SSL peer shut down incorrectly 
at sun.security.ssl.InputRecord.read(Unknown Source) 
... 10 more 

オーダーID情報を使用してPostman

これは、エンドサービスが私が提供する認証で正常に動作していることを意味します。

enter image description here

PLATFORM_NAME - CareHeroTest

Platform_key - 8heOCfIEJHgarCraHuvqQ6vcajgu8A1r7YU4jUFLjxNtwbuREfBuO54E

認証 - Basic VGFuZ29UZXN0OjV4SXRyM2RNRGxFV0FhOVM0czd2WWg3a1EwMWQ1U0ZlUFBVb1paaUsvdk1mYm8zQTVCdkpMQW1ENHRJPQ==

私が間違って何をしているのですか? Tangoの他の握手や証明書はありません。

+0

java証明書をjava keytoolにインポートしましたか? –

+0

私が想定しているSSLはありません。これは基本的なHTTPトランザクションで、基本的なアクセス認証でなければなりません。 'Base64 encoding'を実行する必要があると思います –

+0

これは' 403 Not Authorized' HTTPステータスではなく、SSL例外です。つまり、リクエストはサーバーに送信されません。 Postmanの例では、SSLハンドシェイクを伴う 'https://'を使用しています。おそらく証明書をインポートしていないので、後者は失敗します。 –

答えて

0

私はunirest APIを使用していました。

package com.ansari.examples.javahttpapiclient; 

import com.mashape.unirest.http.HttpResponse; 
import com.mashape.unirest.http.JsonNode; 
import com.mashape.unirest.http.Unirest; 

public class JavaHTTPAPIClient { 
public void getQuestionsUsingUnirest() throws Exception { 
    HttpResponse<JsonNode> response = Unirest.get("https://sandbox.tangocard.com/raas/v1.1/orders/116-101338692-28"). 
      header("accept", "application/json"). 
      header("Authorization", "Basic VGFuZ29UZXN0OjV4SXRyM2RNRGxFV0FhOVM0czd2WWg3a1EwMWQ1U0ZlUFBVb1paaUsvdk1mYm8zQTVCdkpMQW1ENHRJPQ=="). 
      asJson(); 
    System.out.println(response.getBody().getObject().toString(2)); 
} 

public static void main(String args[]) throws Exception { 
    JavaHTTPAPIClient client = new JavaHTTPAPIClient(); 
    client.getQuestionsUsingUnirest(); 
} 
} 
関連する問題