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     
原文地址:https://www.cnblogs.com/zhouguanglin/p/9963608.html