import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.security.KeyStore; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry;  import javax.net.ssl.SSLContext;  import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; 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.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLContexts; import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils;   /**  * @author sprinng  * @Description jdk >=1.7 兼容http https  *  */ public class HttpUtils {      private static CloseableHttpClient httpClientBuilder=null;          /**      *    http 和 https       * @param useProxy 是否使用代理      * @param needCert 是否需要证书      * @return      */     private static CloseableHttpClient createSSLClientDefault(boolean useProxy,boolean needCert) {         SSLConnectionSocketFactory sslsf = null;         try {             if(needCert){                 InputStream instream = new FileInputStream(new File("D:/cert/client.p12"));                 InputStream instream1 = new FileInputStream(new File("D:/cert/tbb.jks"));                 KeyStore keyStore = KeyStore.getInstance("PKCS12");                 KeyStore trustStore = KeyStore.getInstance("JKS");                 try {                     //设置客户端证书                     keyStore.load(instream, "12345678".toCharArray());                     //设置服务器证书                     trustStore.load(instream1, "12345678".toCharArray());                 } catch (Exception e) {                     ECommonUtil.getLog().error("导入证书错误" + e);                 } finally {                     if (instream != null) {                         instream.close();                     }                     if (instream1 != null) {                         instream1.close();                     }                 }                 SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(trustStore).loadKeyMaterial(keyStore, "12345678".toCharArray()).build();                 sslsf = new SSLConnectionSocketFactory(sslContext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);             }else{                 SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {                     @Override                     public boolean isTrusted(X509Certificate[] chain, String authType)                             throws CertificateException {                         return true;                     }                 }).build();                 sslsf = new SSLConnectionSocketFactory(sslContext,new String []{"TLSv1.2"}, null,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);             }             if(useProxy){                 CredentialsProvider credsProvider = new BasicCredentialsProvider();                 AuthScope authScope = new AuthScope(PropertiesUtil.properties.getProperty("proxy_host"),Integer.parseInt(PropertiesUtil.properties.getProperty("proxy_port")));                 Credentials credentials = new  UsernamePasswordCredentials(PropertiesUtil.properties.getProperty("proxy_user"), PropertiesUtil.properties.getProperty("proxy_password"));                 credsProvider.setCredentials(authScope, credentials);                 httpClientBuilder= HttpClients.custom().setSSLSocketFactory(sslsf).setDefaultCredentialsProvider(credsProvider).build();             }else{                 httpClientBuilder= HttpClients.custom().setSSLSocketFactory(sslsf).build();             }             return httpClientBuilder;         } catch (Exception e) {             ECommonUtil.getLog().error("创建https导入证书错误"+e);         }         return HttpClients.createDefault();     }      /**      *       * @param url 请求地址      * @param map 请求参数       * @param res 返回结果      * @param timeOut 超时时间(min)      * @param useProxy 是否使用代理      * @return      * @throws Exception      */     public static String get(String url,Map<String,String> map, String res, int timeOut, boolean useProxy, boolean needCert) throws Exception{         RequestConfig config = null; CloseableHttpClient httpClient=null; CloseableHttpResponse response=null;         if(httpClientBuilder==null){             httpClient= HttpUtils.createSSLClientDefault(useProxy,needCert);         }else{             httpClient=httpClientBuilder;         }         URIBuilder uriBuilder=new URIBuilder(url);         for (Entry<String, String> entry : map.entrySet()) {             uriBuilder=uriBuilder.setParameter(entry.getKey(),entry.getValue());         }         URI uri=uriBuilder.build();         HttpGet httpGet=new HttpGet(uri);         try {             if(useProxy){                 HttpHost proxy = new HttpHost(PropertiesUtil.properties.getProperty("proxy_host"), Integer.parseInt(PropertiesUtil.properties.getProperty("proxy_port")),"http");                 config = RequestConfig.custom().setProxy(proxy).setConnectTimeout(timeOut * 1000 * 60).build();             }else{                 config = RequestConfig.custom().setConnectTimeout(timeOut * 1000 * 60).build();               }                          httpGet.setConfig(config);             ECommonUtil.getLog().info("执行get请求" + httpGet.getRequestLine());             response = httpClient.execute(httpGet);               HttpEntity entity = response.getEntity();               if (entity != null) {                   ECommonUtil.getLog().info("响应状态:"+ response.getStatusLine());                  String rStr=EntityUtils.toString(entity,"UTF-8");                 ECommonUtil.getLog().info("响应内容:" + rStr);                 if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){                     res=rStr;                 }                 EntityUtils.consume(entity);               }         }catch (Exception e) {             ECommonUtil.getLog().info("http请求错误"+e);             throw e;         }finally{             if(httpGet!=null){                 httpGet.releaseConnection();             }             if(response!=null){                 response.close();             }             if(httpClient!=null){                 httpClient.close();             }         }         return res;     }          /**      *       * @param url 请求地址      * @param params 请求参数      * @param res 返回结果      * @param timeOut 超时时间(min)       * @param useProxy 是否使用代理      * @param needCert 是否使用证书      * @return      * @throws Exception      */     @SuppressWarnings({ "deprecation", "unused" })     private static String post(String url, List<NameValuePair> params, String res, int timeOut, boolean useProxy, boolean needCert) throws Exception {         RequestConfig config = null;CloseableHttpClient httpClient=null; CloseableHttpResponse response=null;         if(httpClientBuilder==null){             httpClient= HttpUtils.createSSLClientDefault(useProxy,needCert);         }else{             httpClient=httpClientBuilder;         }         HttpPost httpPost = new HttpPost(url);         if(useProxy){             HttpHost proxy = new HttpHost(PropertiesUtil.properties.getProperty("proxy_host"), Integer.parseInt(PropertiesUtil.properties.getProperty("proxy_port")),"http");             config = RequestConfig.custom().setProxy(proxy).setConnectTimeout(timeOut * 1000 * 60).build();           }else{             config = RequestConfig.custom().setConnectTimeout(timeOut * 1000 * 60).build();           }         httpPost.setConfig(config);         // 设置类型         httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));         try {             response = httpClient.execute(httpPost);             if(302 == response.getStatusLine().getStatusCode()){                 ECommonUtil.getLog().info(response.getLastHeader("Location").getValue());                 post(response.getLastHeader("Location").getValue(), params, res, timeOut, useProxy,needCert);             }             HttpEntity entity = response.getEntity();             res = EntityUtils.toString(entity, "UTF-8");             ECommonUtil.getLog().info(res);             EntityUtils.consume(entity);         } catch (IOException e) {             ECommonUtil.getLog().info("请求异常"+e);             e.printStackTrace();         } finally {             if (response != null) {                 response.close();             }             if (httpPost != null) {                 httpPost.releaseConnection();             }             if (httpClient != null) {                 httpClient.close();             }         }         return res;     }          public static void main(String[] args) throws Exception {         //-----------post----------------         List<NameValuePair> params = new ArrayList<NameValuePair>();         params.add(new BasicNameValuePair("req", "{\"method\":\"checkMobile\",\"timestamp\":\"A100000000000001\",\"channelCode\":\"A1\",\"queryType\":\"1\",\"telephone\":\"15301929770\"}")); //        HttpUtilsDemo.post("http://www.baidu.com", params,"",5,true); //        HttpUtilsDemo.post("https://localhost/spdbSjptServer/service.cgi", params, "" , 5 ,false); //        HttpUtilsDemo.post("http://localhost:7070/spdbSjptServer/service.cgi", params, "" , 5 ,false);         //-----------get------------------         String method = "{\"method\":\"checkMobile\",\"timestamp\":\"A100000000000001\",\"channelCode\":\"A1\",\"queryType\":\"1\",\"telephone\":\"15301929770\"}";         Map<String, String> map = new HashMap<String, String>();         map.put("req", method); //        HttpUtilsDemo.get("https://localhost/spdbSjptServer/service.cgi", map,"",5,false);         HttpUtils.get("http://localhost:7070/spdbSjptServer/service.cgi", map, "", 5, false,false); //        HttpUtilsDemo.get("https://localhost/spdbSjptServer/service.cgi", map, "", 5, false,true); //        HttpUtilsDemo.get("http://www.baidu.com", map, "", 5, true,false);          }      }


import java.io.IOException; import java.util.Properties;   public class PropertiesUtil {     public static final Properties properties = new Properties();     static {          try {           properties.load(PropertiesUtil.class.getClassLoader().getResourceAsStream("config.properties"));          } catch (IOException e) {               ECommonUtil.getLog().error("初始config配置文件失败");         }     } }


import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger;  public class ECommonUtil {     private static  Logger LOG = Logger.getLogger(ECommonUtil.class);      public static Logger getLog() {         return LOG;     }          public static void printSQL(String sql, Object... params) {         getLog().info("SQL: " + sql);         getLog().info("PARAMS: [" + StringUtils.join(params, ",") + "]");     }      }