سلام آدرس url volley دراندروید از نوع https هست وقتی روی گوشی اندروید ۴٫۲ اجرا می کنم این خطا رو میده com.android.volley.NoConnectionError: javax.net.ssl.SSLException: Connection closed by peer چیکار کنم تا اندروید ۴ هم https قبول کنه؟ .
Printable View
سلام آدرس url volley دراندروید از نوع https هست وقتی روی گوشی اندروید ۴٫۲ اجرا می کنم این خطا رو میده com.android.volley.NoConnectionError: javax.net.ssl.SSLException: Connection closed by peer چیکار کنم تا اندروید ۴ هم https قبول کنه؟ .
سلام.یه کلاس درست کن و کدهای زیر رو داخلش قرار بده بعد متد allowAllSSL رو تو اکتیویتی اصلی فراخونیش کن.میتونی این متد رو قبل از ارسال درخواست هم استفاده کنی.
package mylib;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class HttpsTrustManager implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{};
@Override
public void checkClientTrusted(
X509Certificate[] x509Certificates, String s)
throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
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(cont ext
.getSocketFactory());
}
}
روش شما رو هم اجرا کردم فرقی نکرد همون ارور قبلی رو میده
سمت سرورت رو با چی نوشتی؟تو اندروید دیگه هم همین خطا رو میده؟
سمت سرور با پی اچ پی نوشتم
اندروید پنج و شش https قبول می کنه
با اندروید چهار https قبول نمی کنه ولی http قبول می کنه
خودم از همون کدی که فرستادم نتیجه گرفتم.ssl رو سرور معتبره؟یعنی تو مرورگر ارور نمیده؟
تو مرورگر مشکلی نداره
ssl من رایگانه می تونه به خاطر رایگان بودنش باشه؟
فکر نکنم رایگان بودنش ربطی به این قضیه داشته باشه.فقط موقعی که تو مرورگر واردش میکنی نباید خطای نامعتبر بودن بده.کتابخونه زیر رو نصب کن ببین بازم خطا میده یا نه.هر چند کتابخونه ش منقضی شده ولی به شخص تا حالا تو ورژن های مختلف اندروید مشکلی ازش ندیدم
'com.mcxiaoke.volley:library-aar:1.0.0'
ممنون ولی درست نشد