分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

HttpClient请求工具类

发布时间:2023-09-06 02:28责任编辑:蔡小小关键词:暂无标签
 ?1 package com.yangche.utils; ?2 ??3 import org.apache.http.NameValuePair; ?4 import org.apache.http.client.ClientProtocolException; ?5 import org.apache.http.client.entity.UrlEncodedFormEntity; ?6 import org.apache.http.client.methods.*; ?7 import org.apache.http.client.utils.URIBuilder; ?8 import org.apache.http.entity.ContentType; ?9 import org.apache.http.entity.StringEntity; 10 import org.apache.http.impl.client.CloseableHttpClient; 11 import org.apache.http.impl.client.HttpClients; 12 import org.apache.http.message.BasicNameValuePair; 13 import org.apache.http.util.EntityUtils; 14 import org.springframework.util.StringUtils; 15 ?16 import java.io.IOException; 17 import java.io.UnsupportedEncodingException; 18 import java.net.URI; 19 import java.net.URISyntaxException; 20 import java.util.ArrayList; 21 import java.util.List; 22 import java.util.Map; 23 ?24 public class HttpClientUtil { 25 ????public static String doGet(String url, Map<String,Object> param){ 26 ????????//创建httpclient对象 27 ????????CloseableHttpClient httpClient = HttpClients.createDefault(); 28 ????????String resultString=""; 29 ????????CloseableHttpResponse response=null; 30 ????????try { 31 ????????????URIBuilder builder=new URIBuilder(url); 32 ????????????if(param!=null){ 33 ????????????????for (String key:param.keySet()){ 34 ????????????????????if(param.get(key) instanceof List){ 35 ????????????????????????List list=(List)param.get(key); 36 ????????????????????????for (Object liString:list){ 37 ????????????????????????????builder.addParameter(key,String.valueOf(liString)); 38 ????????????????????????} 39 ????????????????????}else { 40 ????????????????????????builder.addParameter(key,String.valueOf(param.get(key))); 41 ????????????????????} 42 ????????????????} 43 ????????????} 44 ????????????URI uri=builder.build(); 45 ????????????//创建httpGet请求 46 ????????????HttpGet httpGet=new HttpGet(uri); 47 ????????????//执行请求 48 ????????????response=httpClient.execute(httpGet); 49 ????????????resultString= EntityUtils.toString(response.getEntity(),"UTF-8"); 50 ????????} catch (URISyntaxException e) { 51 ????????????e.printStackTrace(); 52 ????????} catch (ClientProtocolException e) { 53 ????????????e.printStackTrace(); 54 ????????} catch (IOException e) { 55 ????????????e.printStackTrace(); 56 ????????}finally { 57 ????????????try { 58 ????????????????if(response!=null){ 59 ????????????????????response.close(); 60 ????????????????} 61 ????????????????httpClient.close(); 62 ????????????} catch (IOException e) { 63 ????????????????e.printStackTrace(); 64 ????????????} 65 ????????} 66 ????????return resultString; 67 ????} 68 ????public static String doGet(String url){ 69 ????????return doGet(url,null); 70 ????} 71 ????public static String doPost(String url,Map<String,String> param){ 72 ????????//创建httpclient对象 73 ????????CloseableHttpClient httpClient = HttpClients.createDefault(); 74 ????????CloseableHttpResponse response=null; 75 ????????String resultString=""; 76 ????????//创建httpPost请求 77 ????????HttpPost httpPost = new HttpPost(url); 78 ????????//创建参数列表 79 ????????if(param!=null){ 80 ????????????List<NameValuePair> paramList=new ArrayList<>(); 81 ????????????for (String key:param.keySet()){ 82 ????????????????paramList.add(new BasicNameValuePair(key,param.get(key))); 83 ????????????} 84 ????????????try { 85 ????????????????//模拟表单 86 ????????????????UrlEncodedFormEntity entity=new UrlEncodedFormEntity(paramList); 87 ????????????????httpPost.setEntity(entity); 88 ????????????????//执行http请求 89 ????????????????response=httpClient.execute(httpPost); 90 ????????????????resultString=EntityUtils.toString(response.getEntity(),"UTF-8"); 91 ????????????} catch (UnsupportedEncodingException e) { 92 ????????????????e.printStackTrace(); 93 ????????????} catch (ClientProtocolException e) { 94 ????????????????e.printStackTrace(); 95 ????????????} catch (IOException e) { 96 ????????????????e.printStackTrace(); 97 ????????????}finally { 98 ????????????????try { 99 ????????????????????response.close();100 ????????????????} catch (IOException e) {101 ????????????????????e.printStackTrace();102 ????????????????}103 ????????????}104 ????????}105 ????????return resultString;106 ????}107 ????public static String doPost(String url){108 ????????return doPost(url,null);109 ????}110 111 ????/**112 ?????* restful请求113 ?????* @param url114 ?????* @param requestType 请求类型:post、delete、patch115 ?????* @param json116 ?????* @return117 ?????*/118 ????public static String doRequest(String url,String requestType,String json){119 ????????//创建HttpClient对象120 ????????CloseableHttpClient httpClient=HttpClients.createDefault();121 ????????CloseableHttpResponse response=null;122 ????????String resultString="";123 ????????try {124 ????????????//创建不同类型的请求125 ????????????HttpPost httpPost=new HttpPost(url);126 ????????????HttpDeleteWithBody httpDelete =new HttpDeleteWithBody(url);127 ????????????HttpPatch httpPatch=new HttpPatch(url);128 ????????????//创建请求内容129 ????????????StringEntity entity=new StringEntity(json, ContentType.APPLICATION_JSON);130 ????????????//执行http请求131 ????????????if(!StringUtils.isEmpty(requestType)&&requestType.equalsIgnoreCase("post")){132 ????????????????httpPost.setEntity(entity);133 ????????????????response=httpClient.execute(httpPost);134 ????????????}else if(!StringUtils.isEmpty(requestType)&&requestType.equalsIgnoreCase("delete")){135 ????????????????httpDelete.setEntity(entity);136 ????????????????response=httpClient.execute(httpDelete);137 ????????????}else if(!StringUtils.isEmpty(requestType)&&requestType.equalsIgnoreCase("patch")){138 ????????????????httpPatch.setEntity(entity);139 ????????????????response=httpClient.execute(httpPatch);140 ????????????}141 ????????????resultString=EntityUtils.toString(response.getEntity(),"UTF-8");142 ????????} catch (IOException e) {143 ????????????e.printStackTrace();144 ????????} finally {145 ????????????try {146 ????????????????response.close();147 ????????????} catch (IOException e) {148 ????????????????e.printStackTrace();149 ????????????}150 ????????}151 ????}152 153 ????private static class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {154 ????????public static final String METHOD_NAME="DELETE";155 ????????@Override156 ????????public String getMethod() {157 ????????????return METHOD_NAME;158 ????????}159 ????????public HttpDeleteWithBody (final String uri){160 ????????????super();161 ????????????setURI(URI.create(uri));162 ????????}163 ????????public HttpDeleteWithBody (final URI uri){164 ????????????super();165 ????????????setURI(uri);166 ????????}167 ????????public HttpDeleteWithBody(){168 ????????????super();169 ????????}170 ????}171 }

 以上所需的maven依赖如下:

 1 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> 2 <dependency> 3 ????<groupId>org.apache.httpcomponents</groupId> 4 ????<artifactId>httpcore</artifactId> 5 ????<version>4.4.10</version> 6 </dependency> 7 ?8 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> 9 <dependency>10 ????<groupId>org.apache.httpcomponents</groupId>11 ????<artifactId>httpclient</artifactId>12 ????<version>4.5.6</version>13 </dependency>

HttpClient请求工具类

原文地址:https://www.cnblogs.com/yangche/p/10223983.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved