Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Android Volley发出HTTPS请求并信任所有SSL证书_Android_Ssl_Android Volley - Fatal编程技术网

使用Android Volley发出HTTPS请求并信任所有SSL证书

使用Android Volley发出HTTPS请求并信任所有SSL证书,android,ssl,android-volley,Android,Ssl,Android Volley,我想信任我的应用程序中的所有SSL证书 try { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws Ce

我想信任我的应用程序中的所有SSL证书

try {
    TrustManager[] trustAllCerts = new TrustManager[] {
        new X509TrustManager() {
            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            public X509Certificate[] getAcceptedIssuers() {
                X509Certificate[] myTrustedAnchors = new X509Certificate[0];
                return myTrustedAnchors;
            }
        }
    };

    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
        @Override
        public boolean verify(String arg0, SSLSession arg1) {
            return true;
        }
    });

} catch (Exception e) {
    Log.e(TAG, "nuke", e);
}
我在我的android.app.Application中添加了这些代码

try {
    TrustManager[] trustAllCerts = new TrustManager[] {
        new X509TrustManager() {
            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            public X509Certificate[] getAcceptedIssuers() {
                X509Certificate[] myTrustedAnchors = new X509Certificate[0];
                return myTrustedAnchors;
            }
        }
    };

    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
        @Override
        public boolean verify(String arg0, SSLSession arg1) {
            return true;
        }
    });

} catch (Exception e) {
    Log.e(TAG, "nuke", e);
}
但是
截击错误.networkResponse.statusCode
总是500

我使用firefox访问JSONDataUrl,它工作正常

救命啊

String JSONDataUrl=”https://something";
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.GET,JSONDataUrl,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
dismissDialog();
Log.d(标签“响应:”+响应);
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
dismissDialog();
如果(调试){
if(volleyError.networkResponse!=null){
Log.e(标记“headers:+volleyError.networkResponse.headers”);
Log.e(标记“statusCode:+volleyError.networkResponse.statusCode”);
}
}
Log.e(TAG,volleyError.toString(),volleyError);
}
});
add(jsonObjectRequest);

可能存在的重复项。我认为Emmby有最好的答案,但它不包括信任所有证书。其他人为此提供了代码。我阅读了该主题和Daniel的答案。但是我找不到方法SSLSocketFactory.setHostnameVerifier和SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER。“但是volleyError.networkResponse.statusCode总是500”-这是一个服务器错误。您需要先修复服务器。服务器修复后,您可以继续了解客户端如何连接到服务器。@jww我编写的代码与Daniel的答案类似。现在很好用。非常感谢。@android_-su:你能发布你的答案吗,你是如何在截击中实现的