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();
        }
    
    }
  • 相关阅读:
    C++——string转char[]
    Ackerman的非递归算法(未解决)
    单链表——递归求最大整数、节点个数、平均值
    队列——以数组Q[m]存放循环队列元素,设置一个标志tag,以tag=0和tag=1来区别在头指针和尾指针相等时,队列为空或满
    队列——假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针), * 试编写相应的置空队列、判断队列是否为空、入队和出队等算法。
    栈——判断回文
    栈——表达式求值
    栈——匹配()[]
    栈——十进制转八进制
    动态获取导航栏
  • 原文地址:https://www.cnblogs.com/gongcb/p/2606430.html
Copyright © 2011-2022 走看看