https 证书实现

来源:互联网 发布:syslog 数据库 编辑:程序博客网 时间:2024/06/11 01:23
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.KeyStore;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.Consts;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.socket.ConnectionSocketFactory;import org.apache.http.conn.socket.PlainConnectionSocketFactory;import org.apache.http.conn.ssl.SSLSocketFactory;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.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.apache.log4j.Logger;/** * @version 1.0 */public class HttpsPost {private static Logger _log = Logger.getLogger(HttpsPost.class);private static PoolingHttpClientConnectionManager connMgr;private static RequestConfig requestConfig;private static final int MAX_TIMEOUT = 7000;static {connMgr = new PoolingHttpClientConnectionManager();connMgr.setMaxTotal(100);connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());RequestConfig.Builder configBuilder = RequestConfig.custom();configBuilder.setConnectTimeout(MAX_TIMEOUT);configBuilder.setSocketTimeout(MAX_TIMEOUT);configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);requestConfig = configBuilder.build();}public static String doPost(String url, Map<String, String> params) {CloseableHttpClient httpclient = HttpClients.createDefault();String result = "";try {KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());File directory = new File("");try {System.out.println(directory.getCanonicalPath());System.out.println(directory.getAbsolutePath());} catch (Exception e) {}FileInputStream instream = new FileInputStream(new File("xxxx.keystore"));try {trustStore.load(instream, "mima".toCharArray());} finally {try {instream.close();} catch (Exception ignore) {}}SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);Scheme sch = new Scheme("https", 8443, socketFactory);Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE).register("https", socketFactory).build();PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);httpclient = HttpClients.custom().setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig).build();HttpPost httppost = new HttpPost(url);UrlEncodedFormEntity uefEntity = null;List<NameValuePair> list = new ArrayList<NameValuePair>();Iterator iterator = params.entrySet().iterator();while (iterator.hasNext()) {Entry<String, String> elem = (Entry<String, String>) iterator.next();list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));}if (list.size() > 0) {uefEntity = new UrlEncodedFormEntity(list, Consts.UTF_8);}httppost.setEntity(uefEntity);System.out.println("executing request " + httppost.getURI());CloseableHttpResponse response = httpclient.execute(httppost);try {HttpEntity entity = response.getEntity();if (entity != null) {result = EntityUtils.toString(entity, Consts.UTF_8);System.out.println("--------------------------------------");System.out.println("Response content: " + result);System.out.println("--------------------------------------");_log.debug("Response content: " + result);}} finally {response.close();}} catch (Exception e) {e.printStackTrace();} finally {try {httpclient.close();} catch (IOException e) {e.printStackTrace();}}return result;}}
https 带证书实现,使用httpcliet-4.5.3.jar、httpcore-4.4.6.jar  使用比较高的版本。

原创粉丝点击