支持https但不验证证书的HttpClient

1、WebClientDevWrapper 

package cn.edu.nuc.https;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

public class WebClientDevWrapper {
	public static HttpClient wrapClient(HttpClient base) throws Exception {
        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {
            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
            }

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return new java.security.cert.X509Certificate[0];
            }
        };
        ctx.init(null, new TrustManager[]{tm}, null);
        SSLSocketFactory ssf = new SSLSocketFactory(ctx);
        ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        ClientConnectionManager ccm = base.getConnectionManager();
        SchemeRegistry sr = ccm.getSchemeRegistry();
        sr.register(new Scheme("https", ssf, 443));
        return new DefaultHttpClient(ccm, base.getParams());
    }
}


2、测试代码:
package cn.edu.nuc.https;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class TestHttps {
	
	public void testHttpGet() throws Exception {
		HttpClient client =WebClientDevWrapper.wrapClient(new DefaultHttpClient());

	    /*HttpPost post = new HttpPost("https://localhost:8443/login");
//	    StringEntity entity = new StringEntity("user=test@abc.com&pwd=111&type=x");
//	    post.setEntity(entity);
	    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
	    nameValuePairs.add(new BasicNameValuePair("user", "test@abc.com"));
	    nameValuePairs.add(new BasicNameValuePair("pwd", "111"));
	    nameValuePairs.add(new BasicNameValuePair("type", "x"));
	    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));*/
	    
	    // 访问支付宝
	 	HttpGet httpget = new HttpGet("https://www.alipay.com/");
	    HttpResponse res = client.execute(httpget);
	    System.out.println(res.getStatusLine());
	    BufferedReader br = new BufferedReader(new InputStreamReader(res.getEntity().getContent(),"utf-8"));
	    String line = br.readLine();
	    while (line != null) {
	        System.out.println(line);
	        line = br.readLine();
	    }
	    client.getConnectionManager().shutdown();
	}
	
	public static void main(String...strings) throws Exception {
		new TestHttps().testHttpGet();
	}
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值