Android Https请求调用

来源:互联网 发布:淘宝秒杀催生团队 编辑:程序博客网 时间:2024/06/05 21:28

转载:http://blog.csdn.net/kqz2014/article/details/62883470


获取HTTPS证书

public static class NukeSSLCerts {    protected static final String TAG = "NukeSSLCerts";    public static void nuke() {        try {            TrustManager[] trustAllCerts = new TrustManager[]{                    new X509TrustManager() {                        public X509Certificate[] getAcceptedIssuers() {                            X509Certificate[] myTrustedAnchors = new X509Certificate[0];                            return myTrustedAnchors;                        }                        @Override                        public void checkClientTrusted(X509Certificate[] certs, String authType) {                        }                        @Override                        public void checkServerTrusted(X509Certificate[] certs, String authType) {                        }                    }            };            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) {                    if(arg0.equals("https地址"){                          return true;                     }                    return false;                }            });        } catch (Exception e) {        }    }}


然后再Application初始化

NukeSSLCerts.nuke();

最好将http请求的ip地址改为

https://abc....



javax.net.ssl
接口 HostnameVerifier


public interface HostnameVerifier

此类是用于主机名验证的基接口。

在握手期间,如果 URL 的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。

策略可以是基于证书的或依赖于其他验证方案。

当验证 URL 主机名使用的默认规则失败时使用这些回调。

从以下版本开始:
1.4

方法摘要 booleanverify(String hostname, SSLSession session) 
          验证主机名和服务器验证方案的匹配是可接受的。 

方法详细信息

verify

boolean verify(String hostname,               SSLSession session)
验证主机名和服务器验证方案的匹配是可接受的。

参数:
hostname - 主机名
session - 到主机的连接上使用的 SSLSession
返回:
如果主机名是可接受的,则返回 true


0 0
原创粉丝点击