无根证书时访问 https(httpclient)
来源:互联网 发布:网络隐蔽性 英文 编辑:程序博客网 时间:2024/05/16 10:26
1. httpclient 4.2.3
1.1 download urlhttp://archive.apache.org/dist/httpcomponents/httpclient/binary/
1.2 依赖 jar
commons-logging-1.1.1.jar
httpclient-4.2.3.jar
httpcore-4.2.2.jar
1.3 示例代码
import java.io.IOException;import java.net.Socket;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocket;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.conn.scheme.PlainSocketFactory;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;import org.apache.http.impl.conn.PoolingClientConnectionManager;import org.apache.http.params.HttpParams;import org.apache.http.util.EntityUtils;public class HttpsClient {public static void main(String[] args) throws Exception {SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, new TrustManager[]{new MyTrustManager()}, null);SSLSocketFactory sslSocketFactory = new MySSLSocketFactory(sslContext);SchemeRegistry schemeRegister = new SchemeRegistry();schemeRegister.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));schemeRegister.register(new Scheme("https", 443, sslSocketFactory));PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegister);cm.setMaxTotal(200); // 所有主机的最大并发连接数cm.setDefaultMaxPerRoute(100); // 单个主机的最大并发连接数HttpGet get = new HttpGet("https://kyfw.12306.cn/otn/login/init");HttpClient httpClient = new DefaultHttpClient(cm);HttpResponse response = httpClient.execute(get);String respStr = EntityUtils.toString(response.getEntity());System.out.println(respStr);}}class MyTrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}}class MySSLSocketFactory extends SSLSocketFactory {public MySSLSocketFactory(SSLContext sslContext) {super(sslContext, ALLOW_ALL_HOSTNAME_VERIFIER);}@Overridepublic Socket createSocket(HttpParams params) throws IOException {Socket socket = super.createSocket(params);if (socket instanceof SSLSocket) {// Allow TLSv1 protocol only((SSLSocket)socket).setEnabledProtocols(new String[]{"TLSv1"});}return socket;}}2. httpclient 4.3.6
2.1 download url
http://archive.apache.org/dist/httpcomponents/httpclient/binary/
2.2 依赖 jar
commons-logging-1.1.3.jar
httpclient-4.3.6.jar
httpcore-4.3.3.jar
2.3 示例代码
import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import org.apache.http.conn.socket.ConnectionSocketFactory;import org.apache.http.conn.socket.PlainConnectionSocketFactory;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.util.EntityUtils;public class HttpsClient {public static void main(String[] args) throws Exception {SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, new TrustManager[]{new MyTrustManager()}, null);SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory( sslContext, new String[]{"TLSv1"}, null, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);Registry<ConnectionSocketFactory> register = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.getSocketFactory()) .register("https", sslSocketFactory).build();PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(register);cm.setMaxTotal(200); // 所有主机的最大并发连接数cm.setDefaultMaxPerRoute(100); // 单个主机的最大并发连接数HttpGet get = new HttpGet("https://kyfw.12306.cn/otn/login/init");CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();HttpResponse response = httpClient.execute(get);String respStr = EntityUtils.toString(response.getEntity());System.out.println(respStr);}}class MyTrustManager implements X509TrustManager {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}}-- END
0 0
- 无根证书时访问 https(httpclient)
- java httpclient 无证书访问 https
- 使用 httpclient 访问https接口问题(无证书访问https接口)
- 无根证书时访问 https
- httpclient无证书访问
- httpclient无信任证书访问
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- httpclient 无信任证书使用https
- HttpClient忽略证书访问HTTPS接口
- HttpClient忽略证书访问HTTPS接口
- HttpClient忽略证书访问HTTPS接口()
- HttpClient忽略证书访问HTTPS接口
- httpclient访问未知证书的https网站
- 【连载】我要学唱歌
- Maven 实战
- PL/SQL 语句块(Block)
- C++ sizeof 一题
- 用百度map api展示时空数据(四)--ajax的实现
- 无根证书时访问 https(httpclient)
- jquery解析json数据
- nginx进程管理之worker进程
- Ng在coursera上的机器学习公开课——zai总结(1)_梯度下降
- 详谈 ajax + thinkphp
- EXCEL VBA算写字楼的租赁情况
- 妈妈联盟
- Postgres 查询处理部分源码分析
- Android开发之JNI调用本地C库专题(二):Android增量更新