/ / वॉली - एंड्रॉइड, एसएसएल के माध्यम से एफटी एपीआई को कॉल करते समय त्रुटि का सामना करना पड़ता है

वॉली - एंड्रॉइड, एसएसएल के माध्यम से https एपीआई कॉल करते समय त्रुटि का सामना करना

मेरे पास एक ही कोड के साथ 3 गंभीर सेटअप हैं।

  1. एसएसएल के बिना सर्वर 1 : इसका काम ठीक है।
  2. सर्वर 2 SSL पर उत्पादन के साथ गंभीर है (प्रमाण पत्र प्राधिकृत करें): इसका काम ठीक है।
  3. सर्वर 3 एसएसएल के साथ टेस्ट पर गंभीर (प्रमाण पत्र समान प्रमाणीकरण प्राधिकृत करें सर्वर 2 के रूप में): लेकिन यह काम नहीं कर रहा है। यह एक अपवाद का अनुसरण करता है।

त्रुटि:

 onErrorResponse: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
in.chsone.member.exceptions.UnhandledException: error.networkResponse is null.
at in.chsone.member.network.NetworkResponseHandler.onErrorResponse(NetworkResponseHandler.java:181)
at com.android.volley.Request.deliverError(Request.java:598)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

उत्तर:

जवाब के लिए 2 № 1
public class HttpsTrustManager implements X509TrustManager {

private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{};

@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {

}

@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {

}

public boolean isClientTrusted(X509Certificate[] chain) {
return true;
}

public boolean isServerTrusted(X509Certificate[] chain) {
return true;
}

@Override
public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}

public static void allowAllSSL() {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {

@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}

});

SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[]{new HttpsTrustManager()};
}

try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}

HttpsURLConnection.setDefaultSSLSocketFactory(context
.getSocketFactory());
}

}

एली में कॉल एप से पहले नीचे की ओर कॉल करें

HttpsTrustManager.allowAllSSL();