zoukankan      html  css  js  c++  java
  • 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();
        }
    
    }
  • 相关阅读:
    oracle比较常用的函数
    生成GUID
    字符串操作
    Visual Studio常用快捷键
    c#保存异常日志
    c#的Trim方法
    c#之文件操作
    Python可视化库matplotlib.pyplot里contour与contourf的区别
    python linspace
    神经网络实现连续型变量的回归预测(python)
  • 原文地址:https://www.cnblogs.com/gongcb/p/2606430.html
Copyright © 2011-2022 走看看