HttpClient 4.3.x Https TLS
2016-07-22 13:35
323 查看
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.commons.io.IOUtils;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class HttpsClient
{
private String sslKeyStorePath;
private String sslKeyStorePassword;
private HttpClient httpClient;
public static final String SSLKEYSTORETYPE_PKCS12 = "PKCS12";
public static final String SSLKEYSTORETYPE_JKS = "jks";
public static final String SCHEME_HTTPS = "https";
public static final int HTTPS_PORT = 8443;
public static final String SSLCONTEXT_SSL = "TLS";
public static final String KEYMANAGERFACTORY_SUNX509 = "sunx509";
public HttpsClient(String sslKeyStorePath, String sslKeyStorePassword)
throws KeyManagementException, UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException
{
this.sslKeyStorePath = sslKeyStorePath;
this.sslKeyStorePassword = sslKeyStorePassword;
this.httpClient = getHttpClient(getSSLContext());
}
public SSLContext getSSLContext()
throws KeyManagementException, UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException
{
SSLContext sslContext = null;
KeyStore kstore = KeyStore.getInstance("PKCS12");
kstore.load(new FileInputStream(this.sslKeyStorePath), this.sslKeyStorePassword.toCharArray());
KeyManagerFactory keyFactory = KeyManagerFactory.getInstance("sunx509");
keyFactory.init(kstore, this.sslKeyStorePassword.toCharArray());
TrustManager[] tm = { new MyX509TrustManager() };
sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyFactory.getKeyManagers(), tm, null);
return sslContext;
}
public HttpClient getHttpClient(SSLContext sslContext) {
CloseableHttpClient httpClient = null;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
return httpClient;
}
public String request(String url, HashMap formParams) throws ClientProtocolException, IOException
{
List valuePairs = new LinkedList();
Iterator iter = formParams.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String val = (String)entry.getValue();
valuePairs.add(new BasicNameValuePair(key, val));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(valuePairs, Consts.UTF_8);
HttpPost post = new HttpPost(url);
post.setEntity(entity);
HttpResponse httpResponse = this.httpClient.execute(post);
return IOUtils.toString(httpResponse.getEntity().getContent(), Consts.UTF_8);
}
public String getSslKeyStorePath()
{
return this.sslKeyStorePath;
}
public void setSslKeyStorePath(String sslKeyStorePath) {
this.sslKeyStorePath = sslKeyStorePath;
}
public String getSslKeyStorePassword() {
return this.sslKeyStorePassword;
}
public void setSslKeyStorePassword(String sslKeyStorePassword) {
this.sslKeyStorePassword = sslKeyStorePassword;
}
}
4000
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import org.apache.commons.io.IOUtils;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class HttpsClient
{
private String sslKeyStorePath;
private String sslKeyStorePassword;
private HttpClient httpClient;
public static final String SSLKEYSTORETYPE_PKCS12 = "PKCS12";
public static final String SSLKEYSTORETYPE_JKS = "jks";
public static final String SCHEME_HTTPS = "https";
public static final int HTTPS_PORT = 8443;
public static final String SSLCONTEXT_SSL = "TLS";
public static final String KEYMANAGERFACTORY_SUNX509 = "sunx509";
public HttpsClient(String sslKeyStorePath, String sslKeyStorePassword)
throws KeyManagementException, UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException
{
this.sslKeyStorePath = sslKeyStorePath;
this.sslKeyStorePassword = sslKeyStorePassword;
this.httpClient = getHttpClient(getSSLContext());
}
public SSLContext getSSLContext()
throws KeyManagementException, UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException
{
SSLContext sslContext = null;
KeyStore kstore = KeyStore.getInstance("PKCS12");
kstore.load(new FileInputStream(this.sslKeyStorePath), this.sslKeyStorePassword.toCharArray());
KeyManagerFactory keyFactory = KeyManagerFactory.getInstance("sunx509");
keyFactory.init(kstore, this.sslKeyStorePassword.toCharArray());
TrustManager[] tm = { new MyX509TrustManager() };
sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyFactory.getKeyManagers(), tm, null);
return sslContext;
}
public HttpClient getHttpClient(SSLContext sslContext) {
CloseableHttpClient httpClient = null;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
return httpClient;
}
public String request(String url, HashMap formParams) throws ClientProtocolException, IOException
{
List valuePairs = new LinkedList();
Iterator iter = formParams.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String val = (String)entry.getValue();
valuePairs.add(new BasicNameValuePair(key, val));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(valuePairs, Consts.UTF_8);
HttpPost post = new HttpPost(url);
post.setEntity(entity);
HttpResponse httpResponse = this.httpClient.execute(post);
return IOUtils.toString(httpResponse.getEntity().getContent(), Consts.UTF_8);
}
public String getSslKeyStorePath()
{
return this.sslKeyStorePath;
}
public void setSslKeyStorePath(String sslKeyStorePath) {
this.sslKeyStorePath = sslKeyStorePath;
}
public String getSslKeyStorePassword() {
return this.sslKeyStorePassword;
}
public void setSslKeyStorePassword(String sslKeyStorePassword) {
this.sslKeyStorePassword = sslKeyStorePassword;
}
}
4000
相关文章推荐
- 应用http协议的几个动作: get post put 等
- 图论(网络流):[SDOI2010] 星际竞速
- 微信公共平台php用$GLOBALS["HTTP_RAW_POST_DATA"]收不到信息解决方法
- Nodejs获取网络数据并生成Excel表格(未测试0
- 如何通过无线网络真机调试android应用
- asynchttpClient框架关于多文件批量上传的问题,改用xUtil
- nginx配置https
- 上传图片携带参数至服务器工具类
- HttpClient(Post和Get)
- Win10主机无法被外站机器ping通的处置
- freeradius 限制rp-pppoe服务器每一个连接的带宽
- 网络基础篇——路由报表
- golang实现http服务器处理静态文件示例
- HTTP请求与响应码
- HttpUtils 用于进行网络请求的工具类(未测试)
- HttpURLConnection入门
- TCP协议中的三次握手和四次挥手
- 以太帧、ip帧、udp/tcp帧、http报文结构
- 浅谈HTTP中Get与Post的区别
- nagios系列(四)之nagios主动方式监控tcp常用的80/3306等端口监控web/syncd/mysql及url服务