zoukankan      html  css  js  c++  java
  • HTTP 请求 的方法Util

    HTTP请求 的一系列方法总结


      1  /**
      2         * *******************************传统请求--开始**************************************
      3         * */
      4     
      5     /**
      6      * HttpClient 发送 Post 请求
      7      * @param url  路径:String
      8      * @param mapParam 参数:java.util.Map
      9      * @return
     10      */
     11     public static String sendClientPost(String url,Map<String,String> headers,Map<String,String> mapParam){
     12         return httpPost(url, headers,new JSONObject(mapParam), false);
     13     }
     14     
     15     /**
     16      * HttpClient 发送 Post 请求
     17      * @param url  路径:String
     18      * @param JsonObjectParam 参数:org.json.JSONObject
     19      * @return
     20      */
     21     public static String sendClientPost(String url,Map<String,String> headers,JSONObject JsonObjectParam){
     22         return httpPost(url, headers,JsonObjectParam, false);
     23     }
     24     
     25     
     26     /**
     27      * HttpClient 发送 Get 请求
     28      * @param url 路径:String
     29      * @return
     30      */
     31     public static String sendClientGet(String url){
     32         return httpGet(url,null);
     33     }
     34     /**
     35      * HttpClient 发送 Get 请求
     36      * @param url 路径:String
     37      * @param headers Map<String,String>
     38      * @return
     39      */
     40     public static String sendClientGet(String url,Map<String,String> headers){
     41         return httpGet(url,headers);
     42     }
     43     
     44     /**
     45      * HttpClient 发送 Delete 请求
     46      * @param url 路径:String
     47      * @return
     48      */
     49     public static String sendClientDelete(String url){
     50         return httpDelete(url,null);
     51     }
     52     /**
     53      * HttpClient 发送 Delete 请求
     54      * @param url 路径:String
     55      * @param headers Map<String,String>
     56      * @return
     57      */
     58     public static String sendClientDelete(String url,Map<String,String> headers){
     59         return httpDelete(url,headers);
     60     }
     61     
     62     
     63     /**
     64      * urlConnectionGet
     65      * @param url  路径
     66      * @return
     67      */
     68     public static String sendConnectionGet(String url,String param){
     69         return sendGet(url,param);
     70     } 
     71     
     72     /**
     73      * 向指定 URL 发送POST方法的请求
     74      * @param url 发送请求的 URL
     75      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     76      * @return 所代表远程资源的响应结果
     77      */
     78     public static String sendConnectionPost(String url,String param){
     79         return sendPost(url,param);
     80     }
     81     /**
     82         * *******************************传统请求--结束**************************************
     83         * */
     84     
     85  
     86     /**
     87         * *******************************Jsoup请求--开始**************************************
     88         * */
     89     
     90        /**
     91         * 发送 POST 请求
     92         * @param url 请求地址
     93         * @param cookie cookie:String
     94         * @param headers 头信息:Map<String,String>
     95         * @param params 参数:Map<String,Object>
     96         * @return String
     97         */
     98        public static String sendJsoupPost(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
     99            String sendRequest = sendRequest(url, cookie, headers,params, "POST",isJsonParam);
    100            return sendRequest;
    101        }
    102        
    103        /**
    104         * 发送 POST 请求
    105         * @param url 请求地址
    106         * @param headers 头信息:Map<String,String>
    107         * @param params 参数:Map<String,Object>
    108         * @return String
    109         */
    110        public static String sendJsoupPost(String url,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
    111            String sendRequest = sendRequest(url, null, headers,params, "POST", isJsonParam);
    112            return sendRequest;
    113        }
    114        
    115        /**
    116         * 发送 POST 请求
    117         * @param url 请求地址
    118         * @param cookie cookie:String
    119         * @param headers 头信息:Map<String,String>
    120         * @param params 参数:Map<String,Object>
    121         * @return String
    122         */
    123        public static String sendJsoupPost(String url,Map<String,Object> params,boolean isJsonParam) {
    124            String sendRequest = sendRequest(url, null, null,params, "POST", isJsonParam);
    125            return sendRequest;
    126        }
    127        
    128        
    129        /**
    130         * 发送 POST 请求
    131         * @param url 请求地址
    132         * @return String
    133         */
    134        public static String sendJsoupPost(String url) {
    135            String sendRequest = sendRequest(url,  null, null,null, "POST",false);
    136            return sendRequest;
    137        }
    138        
    139        
    140        /**
    141         * 发送 GET 请求
    142         * @param url 请求地址: String
    143         * @param cookie cookie:String
    144         * @param headers 头信息:Map<String,String>
    145         * @param params 参数:Map<String,Object>
    146         * @return String
    147         */
    148        public static String sendJsoupGet(String url,String cookie,Map<String,String> headers,Map<String,Object> params) {
    149            String sendRequest = sendRequest(url, cookie, headers,params, "GET",false);
    150            return sendRequest;
    151        }
    152        
    153        /**
    154         * 发送 GET 请求
    155         * @param url 请求地址: String
    156         * @param headers 头信息:Map<String,String>
    157         * @param params 参数:Map<String,Object>
    158         * @return String
    159         */
    160        public static String sendJsoupGet(String url,Map<String,String> headers,Map<String,Object> params) {
    161            String sendRequest = sendRequest(url, null, headers,params, "GET",false);
    162            return sendRequest;
    163        }
    164        
    165        /**
    166         * 发送 GET 请求
    167         * @param url 请求地址: String
    168         * @return String
    169         */
    170        public static String sendJsoupGet(String url) {
    171            String sendRequest = sendRequest(url, null, null,null, "GET",false);
    172            return sendRequest;
    173        }
    174        
    175        /**
    176         * 发送 GET 请求
    177         * @param url 请求地址: String
    178         * @param params 参数:Map<String,Object>
    179         * @return String
    180         */
    181        public static String sendJsoupGet(String url,Map<String,Object> params) {
    182            String sendRequest = sendRequest(url, null, null,params, "GET",false);
    183            return sendRequest;
    184        }
    185        
    186     /**
    187         * *******************************Jsoup请求--结束**************************************
    188         * */
    189        
    190        
    191        /**
    192         * *******************************获取网页对象--开始**************************************
    193         * */
    194        
    195        /**
    196         * 发送 GET 请求
    197         * @param url 请求地址: String
    198         * @return Document
    199         */
    200        public static Document sendJsoupGetDocument(String url) {
    201            Document sendRequestDocument = sendRequestDocument(url, null, null,null, "GET",false);
    202            return sendRequestDocument;
    203        }
    204        
    205        /**
    206         * 发送 GET 请求
    207         * @param url 请求地址: String
    208         * @param cookie cookie:String
    209         * @param headers 头信息:Map<String,String>
    210         * @param params 参数:Map<String,Object>
    211         * @return Document
    212         */
    213        public static Document sendJsoupGetDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params) {
    214            Document sendRequest = sendRequestDocument(url, cookie, headers,params, "GET",false);
    215            return sendRequest;
    216        }
    217        
    218        /**
    219         * 发送 POST 请求
    220         * @param url 请求地址: String
    221         * @return Document
    222         */
    223        public static Document sendJsoupPostDocument(String url) {
    224            Document sendRequestDocument = sendRequestDocument(url, null, null,null, "POST",false);
    225            return sendRequestDocument;
    226        }
    227        
    228        /**
    229         * 发送 POST 请求
    230         * @param url 请求地址
    231         * @param cookie cookie:String
    232         * @param headers 头信息:Map<String,String>
    233         * @param params 参数:Map<String,Object>
    234         * @return Document
    235         */
    236        public static Document sendJsoupPostDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
    237            Document sendRequest = sendRequestDocument(url, cookie, headers,params, "POST", isJsonParam);
    238            return sendRequest;
    239        }
    240        
    241        
    242     /**
    243         * *******************************获取网页对象--结束**************************************
    244         * */
    245        
    246     
    247     
    248     
    249     
    250     
    251     
    252     /**
    253      * post请求
    254      * @param url         url地址
    255      * @param jsonParam     参数
    256      * @param noNeedResponse    不需要返回结果
    257      * @return
    258      */
    259     private static String httpPost(String url,Map<String,String> headers,JSONObject jsonParam, boolean noNeedResponse){
    260         //post请求返回结果
    261         CloseableHttpClient httpClient = HttpClients.createDefault();
    262 //        DefaultHttpClient httpClient = new DefaultHttpClient();
    263         String jsonResult = null;
    264         HttpPost method = new HttpPost(url);
    265         
    266         if(headers!=null){
    267             Set<String> keySet = headers.keySet();
    268             for (String key : keySet) {
    269                 method.addHeader(key, headers.get(key));
    270             }
    271         }
    272         try {
    273             if (null != jsonParam) {
    274                 //解决中文乱码问题
    275                 StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
    276                 entity.setContentEncoding("UTF-8");
    277                 entity.setContentType("application/json");
    278                 method.setEntity(entity);
    279             }
    280             HttpResponse result = httpClient.execute(method);
    281             url = URLDecoder.decode(url, "UTF-8");
    282             /**请求发送成功,并得到响应**/
    283             //if (result.getStatusLine().getStatusCode() == 200) {
    284                 try {
    285                     /**读取服务器返回过来的json字符串数据**/
    286                     jsonResult = EntityUtils.toString(result.getEntity());
    287                     if (noNeedResponse) {
    288                         return null;
    289                     }
    290                     /**把json字符串转换成json对象**/
    291                 } catch (Exception e) {
    292                     logger.error("HttpPost请求提交失败:" + url, e);
    293                 }
    294             //}
    295         } catch (Exception e) {
    296             logger.error("HttpPost请求提交失败:" + url, e);
    297         }
    298         return jsonResult;
    299     }
    300  
    301  
    302     /**
    303      * 发送get请求
    304      * @param url    路径
    305      * @return
    306      */
    307     private static String httpGet(String url,Map<String,String> headers){
    308         //get请求返回结果
    309         String jsonResult = null;
    310         try {
    311             CloseableHttpClient httpClient = HttpClients.createDefault();
    312 //            DefaultHttpClient client = new DefaultHttpClient();
    313             //发送get请求
    314             HttpGet request = new HttpGet(url);
    315             if(headers!=null){
    316                 Set<String> keySet = headers.keySet();
    317                 for (String key : keySet) {
    318                     request.addHeader(key, headers.get(key));
    319                 }
    320             }
    321             
    322             HttpResponse response = httpClient.execute(request);
    323  
    324             /**请求发送成功,并得到响应**/
    325             if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    326                 /**读取服务器返回过来的json字符串数据**/
    327                 jsonResult = EntityUtils.toString(response.getEntity());
    328             } else {
    329                 logger.error("HttpGet请求提交失败:" + url);
    330             }
    331         } catch (Exception e) {
    332             logger.error("HttpGet请求提交失败:" + url, e);
    333         }
    334         return jsonResult;
    335     }
    336     
    337     /**
    338      * 发送get请求
    339      * @param url 路径
    340      * @return
    341      */
    342     private static String httpDelete(String url,Map<String,String> headers){
    343         //get请求返回结果
    344         String jsonResult = null;
    345         try {
    346             CloseableHttpClient httpClient = HttpClients.createDefault();
    347 //            DefaultHttpClient client = new DefaultHttpClient();
    348             //发送get请求
    349             HttpDelete request = new HttpDelete(url);
    350             if(headers!=null){
    351                 Set<String> keySet = headers.keySet();
    352                 for (String key : keySet) {
    353                     request.addHeader(key, headers.get(key));
    354                 }
    355             }
    356             
    357             HttpResponse response = httpClient.execute(request);
    358             
    359             /**请求发送成功,并得到响应**/
    360             if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    361                 /**读取服务器返回过来的json字符串数据**/
    362                 jsonResult = EntityUtils.toString(response.getEntity());
    363             } else {
    364                 logger.error("HttpDelete请求提交失败:" + url);
    365             }
    366         } catch (Exception e) {
    367             logger.error("HttpDelete请求提交失败:" + url, e);
    368         }
    369         return jsonResult;
    370     }
    371     
    372     /**
    373      * 向指定URL发送GET方法的请求
    374      * @param url 发送请求的URL
    375      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    376      * @return URL 所代表远程资源的响应结果
    377      */
    378     private static String sendGet(String url, String param) {
    379         
    380         String result = "";
    381         BufferedReader in = null;
    382         try {
    383             String urlNameString = url + "?" + param;
    384             URL realUrl = new URL(urlNameString);
    385             // 打开和URL之间的连接
    386             URLConnection connection = realUrl.openConnection();
    387             // 设置通用的请求属性
    388             connection.setRequestProperty("accept", "*/*");
    389             connection.setRequestProperty("connection", "Keep-Alive");
    390             connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    391             // 建立实际的连接
    392             connection.connect();
    393             // 获取所有响应头字段
    394             // Map<String, List<String>> map = connection.getHeaderFields();
    395             // 遍历所有的响应头字段
    396             // 定义 BufferedReader输入流来读取URL的响应
    397             in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
    398             String line;
    399             while ((line = in.readLine()) != null) {
    400                 result += line;
    401             }
    402         } catch (Exception e) {
    403             System.out.println("发送GET请求出现异常!" + e);
    404             e.printStackTrace();
    405         }
    406         // 使用finally块来关闭输入流
    407         finally {
    408             try {
    409                 if (in != null) {
    410                     in.close();
    411                 }
    412             } catch (Exception e2) {
    413                 e2.printStackTrace();
    414             }
    415         }
    416         return result;
    417     }
    418     
    419 
    420     /**
    421      * 向指定 URL 发送POST方法的请求
    422      * @param url 发送请求的 URL
    423      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    424      * @return 所代表远程资源的响应结果
    425      */
    426     private static String sendPost(String url, String param) {
    427         
    428         PrintWriter out = null;
    429         BufferedReader in = null;
    430         String result = "";
    431         try {
    432             URL realUrl = new URL(url);
    433             // 打开和URL之间的连接
    434             URLConnection conn = realUrl.openConnection();
    435             // 设置通用的请求属性
    436             conn.setRequestProperty("accept", "*/*");
    437             conn.setRequestProperty("connection", "Keep-Alive");
    438             conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    439             // 发送POST请求必须设置如下两行
    440             conn.setDoOutput(true);
    441             conn.setDoInput(true);
    442             // 获取URLConnection对象对应的输出流
    443             out = new PrintWriter(conn.getOutputStream());
    444             // 发送请求参数
    445             out.print(param);
    446             // flush输出流的缓冲
    447             out.flush();
    448             // 定义BufferedReader输入流来读取URL的响应
    449             in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    450             String line;
    451             while ((line = in.readLine()) != null) {
    452                 result += line;
    453             }
    454         } catch (Exception e) {
    455             System.out.println("发送 POST 请求出现异常!"+e);
    456             e.printStackTrace();
    457         }finally{
    458             try{
    459                 if(out!=null){
    460                     out.close();
    461                 }
    462                 if(in!=null){
    463                     in.close();
    464                 }
    465             }catch(Exception ex){
    466                 ex.printStackTrace();
    467             }
    468         }
    469         return result;
    470     }
    471    
    472     /** 发送 利用JSOUP 发送 Request 请求
    473      * @param url 请求地址: String
    474      * @param cookie cookie:String
    475      * @param headers 头信息:Map<String,String>
    476      * @param params 参数:Map<String,Object>
    477      * @param method 请求方式: String,GER OR POST
    478      * @return String
    479      */
    480     private static String sendRequest(String url,String cookie,Map<String,String> headers,Map<String,Object> params,String method,boolean isJsonParam) {
    481         String res = null;
    482         try {
    483             Document document = null;
    484             Connection connect = getConnection(url, cookie, headers, params,isJsonParam);
    485             connect.ignoreContentType(true);
    486             if("GET".equals(method)) {
    487                 document = connect.get();
    488             }else if("POST".equals(method)) {
    489                 document = connect.post();
    490             }
    491             
    492             if(document != null) {
    493                 res = document.body().text();
    494             }
    495         } catch (Exception e) {
    496             e.printStackTrace();
    497         }
    498         return res;
    499     }
    500     
    501     
    502     /** 发送 利用JSOUP 发送 Request 请求
    503      * @param url 请求地址: String
    504      * @param cookie cookie:String
    505      * @param headers 头信息:Map<String,String>
    506      * @param params 参数:Map<String,Object>
    507      * @param method 请求方式: String,GER OR POST
    508      * @return String
    509      */
    510     private static Document sendRequestDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params,String method,boolean isJsonParam) {
    511         Document document = null;
    512         try {
    513             Connection connect = getConnection(url, cookie, headers, params,isJsonParam);
    514             connect.ignoreContentType(true);
    515             if("GET".equals(method)) {
    516                 document = connect.get();
    517             }else if("POST".equals(method)) {
    518                 document = connect.post();
    519             }
    520         } catch (Exception e) {
    521             e.printStackTrace();
    522         }
    523         return document;
    524     }
    525     
    526     /** 
    527      * 获取JSOUP Connection
    528      * @param url 请求地址: String
    529      * @param cookie cookie:String
    530      * @param headers 头信息:Map<String,String>
    531      * @param params 头信息:Map<String,Object>
    532      * @return Connection org.jsoup.Connection
    533      */
    534     private static Connection getConnection(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
    535         Connection connect = Jsoup.connect(url);
    536         if(cookie != null) {
    537             connect.header("Cookie", cookie);
    538         }
    539         
    540         if(params != null) {
    541             Map<String,String> param = new HashMap<String,String>();
    542             Set<String> keySet = params.keySet();
    543             for (String key : keySet) {
    544                 if(params.get(key) != null){
    545                     param.put(key, params.get(key)==null ? null : params.get(key)+"");
    546                 }
    547             }
    548             if(isJsonParam){
    549                 connect.requestBody(new JSONObject(param).toString());
    550 //                connect.postDataCharset(new JSONObject(param).toString());
    551             }else{
    552                 
    553                 connect.data(param);
    554             }
    555         }
    556         
    557         if(headers!= null) {
    558             connect.headers(headers);
    559         }else if(headers==null) {
    560             connect.header("Accept", "application/json");
    561             connect.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0");
    562         }
    563         return connect;
    564     }
    565     
  • 相关阅读:
    [模板] Miller_Rabin素数判断代码实现存档
    [模板] KMP字符串匹配标准代码
    [模板] 二分图匹配问题——匈牙利算法
    [原博客存档] [模板] 矩阵快速幂
    matplotlib 随记
    23种设计模式
    26、Android--AsyncTask
    25、Android--Handler
    24、Android--SurfaceView
    23、Android--WebView
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/9963608.html
Copyright © 2011-2022 走看看