2017-04-25 140 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:連接當您連接到HTTPS服務器OKhttp需要知道的TLS版本和密碼套件提供由同行

回答

0

關閉。以下是與https連接的示例代碼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的任何解決方案,它在所有版本上工作正常如果你發現任何解決方案,請讓我知道 –