zoukankan      html  css  js  c++  java
  • 封装HttpClient进行http请求与https请求

    一.https忽略证书

    /**
     * 用于进行Https请求的HttpClient
     * 
     * @author joey
     *
     */
    public class SSLClient {
        public static CloseableHttpClient createSSLClientDefault(){
            try {
                SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                    //信任所有
                    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        return true;
                    }
                }).build();
                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
                return HttpClients.custom().setSSLSocketFactory(sslsf).build();
            } catch (KeyManagementException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (KeyStoreException e) {
                e.printStackTrace();
            }
            return  HttpClients.createDefault();
        }
    
    }

    二.post与get请求

    /**
     * 利用HttpClient的工具类
     * 
     * @author Joey
     *
     */
    public class HttpClientUtil {
        
        private static String charSet = "UTF-8";
        private static CloseableHttpClient httpClient = null;
        private static CloseableHttpResponse response = null;
        
        /**
         * https的post请求
         * @param url
         * @param jsonstr
         * @param charset
         * @return
         */
        public static String doHttpsPost(String url, String jsonStr) {
            try {
                httpClient = SSLClient.createSSLClientDefault();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setHeader("Content-Type", "application/json");
                
                StringEntity se = new StringEntity(jsonStr);
                se.setContentType("text/json");
                se.setContentEncoding(new BasicHeader("Content-Type", "application/json"));
                httpPost.setEntity(se);
                
                response = httpClient.execute(httpPost);
                if (response != null) {
                    HttpEntity resEntity = response.getEntity();
                    if (resEntity != null) {
                        return EntityUtils.toString(resEntity, charSet);
                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }finally {
                 if(httpClient != null){
                        try {
                            httpClient.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if(response != null){
                        try {
                            response.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
            }
            return null;
        }
        
        /**
         * http的post请求(用于key-value格式的参数) 
         * @param url
         * @param param
         * @return
         */
        public static String doHttpPost(String url,Map<String,String> param){
            try {
                //请求发起客户端
                httpClient = HttpClients.createDefault();
                //参数集合
                List<NameValuePair> postParams = new ArrayList<NameValuePair>();
                //遍历参数并添加到集合
                for(Map.Entry<String, String> entry:param.entrySet()){
                    postParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
                }
                
                //通过post方式访问
                HttpPost post = new HttpPost(url);
                HttpEntity paramEntity = new UrlEncodedFormEntity(postParams,charSet);
                post.setEntity(paramEntity);
                response = httpClient.execute(post);
                StatusLine status = response.getStatusLine();  
                int state = status.getStatusCode();  
                if (state == HttpStatus.SC_OK) {  
                    HttpEntity valueEntity = response.getEntity();
                    String content = EntityUtils.toString(valueEntity);
                    //jsonObject = JSONObject.fromObject(content);
                    return content;
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(httpClient != null){
                    try {
                        httpClient.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(response != null){
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return null;
        }
        
         /** 
         * http的post请求(用于请求json格式的参数) 
         * @param url 
         * @param params 
         * @return 
         */  
        public static String doHttpPost(String url, String jsonStr) {  
            try {
                httpClient = HttpClients.createDefault();
              
                // 创建httpPost
                HttpPost httpPost = new HttpPost(url);     
                httpPost.setHeader("Accept", "application/json");   
                  
                StringEntity entity = new StringEntity(jsonStr, charSet);  
                entity.setContentType("text/json");
                entity.setContentEncoding(new BasicHeader("Content-Type", "application/json"));
                httpPost.setEntity(entity);          
                //发送post请求
                response = httpClient.execute(httpPost);  
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
                    HttpEntity responseEntity = response.getEntity();  
                    String jsonString = EntityUtils.toString(responseEntity);  
                    return jsonString;  
                }
            }catch(Exception e) {
                  e.printStackTrace();
            }finally {
                if(httpClient != null){
                    try {
                        httpClient.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(response != null){
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }  
            return null;  
        }  
        
        /**
         * http的Get请求
         * @param url
         * @param param
         * @return
         */
        public static String doHttpGet(String url,Map<String,String> param) {
            CloseableHttpClient httpclient = null;
            CloseableHttpResponse response = null;
            
            try {
                httpclient = HttpClients.createDefault();
                if(param != null && !param.isEmpty()) {
                    //参数集合
                    List<NameValuePair> getParams = new ArrayList<NameValuePair>();
                    for(Map.Entry<String, String> entry:param.entrySet()){
                        getParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
                    }
                    url +="?"+EntityUtils.toString(new UrlEncodedFormEntity(getParams), "UTF-8");
                }
                //发送gey请求
                HttpGet httpGet = new HttpGet(url);  
                response = httpclient.execute(httpGet);  
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
                    return EntityUtils.toString(response.getEntity());  
                } 
            }catch(Exception e) {
                e.printStackTrace();
            }finally{
                if(httpclient != null){
                    try {
                        httpclient.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(response != null){
                    try {
                        response.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return null;
        }
        
    }
    View Code
  • 相关阅读:
    <<软技能,代码之外的生存技能>>读书笔记
    Pma模块详解,对用户登录linux等进行限制,密码修改限制等
    numpy pandas matplotlib
    numpy安装包scipy
    linux python 安装 nose lapack atlas numpy scipy
    kafka搭建
    实例化Bean的方法(基于xml配置)-http://blog.csdn.net/shymi1991/article/details/48153293
    转-Vue.js2.0从入门到放弃---入门实例(一)
    form表单传递对象数组
    使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9040868.html
Copyright © 2011-2022 走看看