关于Android 2.3 代码访问SSL的问题

最近在写一个与腾讯围脖有关的应用。其中需要用调用的API是SSL的,那么就需要以下这个类,否则在Android2.3的系统是不能运行,很无聊。2.1 2.2都是正常运行。

public class MySSLSocketFactory extends SSLSocketFactory {

    SSLContext sslContext = SSLContext.getInstance("TLS");


    public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {

        super(truststore);


        TrustManager tm = new X509TrustManager() {

            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

            }


            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

            }


            public X509Certificate[] getAcceptedIssuers() {

                return null;

            }

        };


        sslContext.init(null, new TrustManager[] { tm }, null);

    }


    @Override

    public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {

        return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);

    }


    @Override

    public Socket createSocket() throws IOException {

        return sslContext.getSocketFactory().createSocket();

    }

}

然后,通过这个方法,创建新的Client


public HttpClient getNewHttpClient(){


    try{


        KeyStore trustStore =KeyStore.getInstance(KeyStore.getDefaultType());


        trustStore.load(null,null);


        MySSLSocketFactory sf =new MySSLSocketFactory(trustStore);


        sf.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);


        HttpParams params=new BasicHttpParams();


        HttpProtocolParams.setVersion(params,HttpVersion.HTTP_1_1);


        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);


        SchemeRegistry registry =new SchemeRegistry();


        registry.register(new Scheme("http",PlainSocketFactory.getSocketFactory(),80));


        registry.register(new Scheme("https", sf,443));


        ClientConnectionManager ccm =new ThreadSafeClientConnManager(params, registry);


        return new DefaultHttpClient(ccm,params);


    }catch(Exception e){


        return new DefaultHttpClient();


    }


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值