Android进阶篇访问Https链接

    public static String getWeiboResult(String url,String httpType) {
		HttpClient httpClient = getNewHttpClient();
//		HttpGet httpGet = null;
//		HttpPost httpPost = null;
//		if(StaticData.GET.equals(httpType)){
//			httpGet = new HttpGet(url);
//		}else if(StaticData.POST.equals(httpType)){
//			httpPost = new HttpPost(url);
//		}
		HttpGet httpGet = new HttpGet(url); 
		InputStream inputStream = null;
		HttpResponse response = null;
		HttpEntity entity;
		String result = "";
		
		try {
//			if(StaticData.GET.equals(httpType)){
//				response = httpClient.execute(httpGet);
//			}else if(StaticData.POST.equals(httpType)){
//				response = httpClient.execute(httpPost);
//			}
			response = httpClient.execute(httpGet);
			entity = response.getEntity();
			inputStream = entity.getContent();
			BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
			String line = "";

			while ((line = reader.readLine()) != null) {
				result = result + line;
			}
			Log.info("json","result= " + result);

		} catch (Exception e) {
			e.printStackTrace();

		} finally {
			try {
				inputStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return result;
	}

	private static HttpClient getNewHttpClient() {
		try {
			KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
			trustStore.load(null, null);

			SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);
			sf.setHostnameVerifier(SSLSocketFactory.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();
		}
	}

SSLSocketFactoryEx.class:

public class SSLSocketFactoryEx extends SSLSocketFactory {

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

    public SSLSocketFactoryEx(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
            UnrecoverableKeyException {
        super(truststore);

        TrustManager tm = new X509TrustManager() {

            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

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

            }

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

            }
        };

        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();
    }

}
原文地址:https://www.cnblogs.com/gongcb/p/2606430.html