2017-04-25 8 views
0

によって閉じ接続私はピンの支払いのためのAPIを呼び出す:https://test-api.pin.net.au/1/cards/Okhttp javax.net.ssl.sslexception:ピア

私は郵便配達、それは良い仕事をしてみてください。

私はokhttpでコードアンドロイドに適用2.7.5

マイコード:

OkHttpClientのHttpClient =新しいOkHttpClient();

RequestBody requestBody = new FormEncodingBuilder() 
      .add("publishable_api_key", BuildConfig.PIN_PAYMENT_PUBLISHABLE_KEY) 
      .add("number", scanResult.cardNumber) 
      .add("expiry_month", scanResult.expiryMonth+"") 
      .add("expiry_year", scanResult.expiryYear+"") 
      .add("cvc", scanResult.cvv) 
      .add("address_postcode", scanResult.postalCode) 
      .add("name", name).build(); 


    Request request = new Request.Builder() 
      .url(BuildConfig.BASE_URL_PIN_PAYMENT + Constants.API_CARD_PIN_PAYMENT) 
      .post(requestBody) 
      .build(); 

    httpClient.newCall(request).enqueue(new Callback() { 
     @Override 
     public void onFailure(Request request, IOException e) { 
      view.hideLoading(); 
      view.showError(e.getMessage()); 
     } 

     @Override 
     public void onResponse(Response response) throws IOException { 
      view.hideLoading(); 
      if (!response.isSuccessful()){ 
       String body = "Something went wrong.Please try again later."; 
       try { 
        JSONObject object = new JSONObject(response.body().string()); 
        body = object.getString("error_description"); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       view.showError(body); 
      }else { 
       view.hideLoading(); 
       Gson gson = new Gson(); 
       CardPinPaymentResponse paymentResponse = gson.fromJson(response.body().string() , CardPinPaymentResponse.class); 
       view.getTokenCardSuccess(paymentResponse); 
      } 
     } 

    }); 

しかし、それは動作しないと問題:javax.net.ssl.SSLException:あなたはOKhttpのバージョンと提供する暗号スイートをTLSいるかを知る必要があります。httpsサーバーに接続すると、ピア

答えて

0

によって閉じ接続。 httpsに接続するコードの例を次に示します。

ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) 
    .tlsVersions(TlsVersion.TLS_1_2) 
    .cipherSuites(
      CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
      CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 
      CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) 
    .build(); 

OkHttpClient client = new OkHttpClient.Builder() 
    .connectionSpecs(Collections.singletonList(spec)) 
    .build(); 

幸運!!!

+0

ありがとうございますが、動作しません。今すぐ問題:受け入れ可能なプロトコルが見つかりません。 isFallback =偽、モード= [のConnectionSpec(暗号スイートの= [TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256]、tlsVersions = [TLS_1_1]、supportsTlsExtensions =真)]、サポートされるプロトコル= [のSSLv3、TLSv1の】 –

+0

それが唯一のコード例です。あなたは、あなたのサーバーで使用しているTLSバージョンを知り、クライアントコードに設定してください。 –

+0

私は同じ問題があります。私のサーバのTLSバージョンも試してみましたが、kitkatの解決方法は見つかりませんでした。あなたが何か解決策を見つけたら、私にも教えてください –

関連する問題