1. httpclient 4.2.3
1.1 download url
http://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 {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
class MySSLSocketFactory extends SSLSocketFactory {
public MySSLSocketFactory(SSLContext sslContext) {
super(sslContext, ALLOW_ALL_HOSTNAME_VERIFIER);
}
@Override
public 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 {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
-- END
分享到:
相关推荐
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
不会的可以在评论区留言哈,这是我自己做项目用到的。所以绝对可用!同时共享出来给到大家
使用httpclient和httpsurlconnection两种方法访问https网址,同时分为验证证书和不验证证书两种方法
java实现读取证书访问https接口并获取返回数据.证书格式cer,der,crt等。
NULL 博文链接:https://liudeh-009.iteye.com/blog/1181571
HttpClient之Https应用实例~ 包含: HttpClient 使用代理访问Https HttpClient 信任所有主机-对于任何证书都不做检查 HttpClient 允许所有证书的校验(包括过期证书)
android HttpClient访问某些Https时,出现了问题,无法访问,好像是要安全验证。此Demo解决了此问题,HttpClient能够Https和Http类型的URL了。 在eclipse下打开工程若有乱码,请把eclipse的字符编码改成UTF-8。
httpClient自动接受https请求的所有证书代码,修改相应测试url,主函数运行即可
HttpClient配置SSL绕过https证书实例,附件中包含所需httpclient组件jar库。博客地址:http://blog.csdn.net/irokay/article/details/78801307。
这是一个关于httpclient4.5访问https网站的例子,可以绕过ssl认证直接访问
以上自己测试是可行的,直接拿过去导入即可,直接用main
httplient向https发送请求会因为证书校验而报错,该工具类提供绕开HTTPS证书校验方法,以实现访问https网站的功能
HttpClient代理访问网络
httpclient来进行https访问
利用tomcat搭建支持ssl的服务,并由httpClient进行https访问。整个过程简单明了。 1.生成key. 2.配置tomcat支持ssl 3.利用一个简单例子用httpClient连接ssl
另外在项目中正好需要访问https协议的接口,而对应的服务器没有购买商业CA颁发的正式受信证书,只是做了个自签名(联想一下12306网站购票时提示的那个警告信息),默认情况下通过HttpClient访问会抛出异常。...
http远程接口调用-httpClient+跳过SSL证书校验. 里面分别有3个httpClient的工具类代码。 还有一个专门为了跳过SSL证书校验的工具类。
简单json解析,httpclient免证书校验
JAVA利用HttpClient进行HTTPS接口调用
java 使用httpclient访问servlet,方便两个不同服务器上的程序相互调用.