0
내가 okhttp와 코드를 안드로이드에 적용 2.7.5
내 코드 :
OkHttpClient 세션 객체 = 새 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에 연결할 때 피어
감사합니다. 작동하지만 문제가 없습니다. 허용되는 프로토콜을 찾을 수 없습니다. isFallback = 거짓, 모드 = 연 a (암호화 방식의 = 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 = TRUE)], 프로토콜 지원 = SSLv3에, TLSv1의] –
이는 단지 예시 코드이다. 귀하의 서버에서 사용중인 TLS 버전을 알고 클라이언트 코드에 –
을 설정하면 동일한 문제가 발생합니다. 또한 TLS 버전의 서버를 사용해 볼 수도 있지만 kitkat에 대한 모든 솔루션을 찾을 수 없습니다. 모든 버전에서 잘 작동합니다. 더 큰 kitkat, 만약 당신이 어떤 해결책을 찾았 으면 알려주세요. –