java http 客户端_java 客户端发起http请求

1 packagecom.mall.core.utils.http;2

3 importorg.apache.commons.lang.StringUtils;4 importorg.apache.http.HttpResponse;5 importorg.apache.http.HttpStatus;6 importorg.apache.http.NameValuePair;7 importorg.apache.http.client.config.RequestConfig;8 importorg.apache.http.client.entity.UrlEncodedFormEntity;9 import org.apache.http.client.methods.*;10 importorg.apache.http.entity.StringEntity;11 importorg.apache.http.impl.client.CloseableHttpClient;12 importorg.apache.http.impl.client.HttpClients;13 importorg.apache.http.message.BasicNameValuePair;14 importorg.apache.http.util.EntityUtils;15 importorg.apache.logging.log4j.LogManager;16 importorg.apache.logging.log4j.Logger;17

18 importjavax.servlet.http.HttpServletRequest;19 importjava.io.IOException;20 importjava.util.ArrayList;21 importjava.util.List;22 importjava.util.Map;23 importjava.util.Set;24

25 /**

26 * Created by admin on 2017/2/22.

自己写了一个工具类 把常见的几种http请求方法 封装起来27 */

28 public classHttpUtils {29

30 private static final Logger logger = LogManager.getLogger(HttpUtils.class);31 private static final RequestConfig requestConfig =RequestConfig.custom()32 .setConnectTimeout(20000).setConnectionRequestTimeout(10000)33 .setSocketTimeout(20000).build();34

35 /**

36 * Http Get37 *38 *@paramurl 请求路径39 *@paramparams 参数40 *@returnhttp响应状态及json结果41 */

42 public static HttpResult doGet(String url, Mapparams) {43 CloseableHttpClient httpClient =HttpClients.createDefault();44 url =contactUrl(url, params);45 HttpGet httpGet = new HttpGet(url.replace(" ", ""));46 returnexecuteRequest(httpClient, httpGet);47 }48

49 /**

50 * Http Post51 *52 *@paramurl 请求路径53 *@paramparams 参数54 *@returnhttp响应状态及json结果55 */

56 public static HttpResult doPost(String url, Mapparams) {57 CloseableHttpClient httpClient =HttpClients.createDefault();58 HttpPost httpPost = newHttpPost(url);59 List pairs = new ArrayList<>();60 Set keys =params.keySet();61 for(String key : keys) {62 String value =params.get(key);63 pairs.add(newBasicNameValuePair(key, value));64 }65 returnexecuteRequest(httpClient, httpPost, pairs);66 }67

68 /**

69 * Http Put70 *71 *@paramurl 请求路径72 *@paramparams 参数73 *@returnhttp响应状态及json结果74 */

75 public static HttpResult doPut(String url, Mapparams) {76 CloseableHttpClient httpClient =HttpClients.createDefault();77 url =contactUrl(url, params);78 HttpPut httpPut = newHttpPut(url);79 returnexecuteRequest(httpClient, httpPut);80 }81

82 /**

83 * Http Delete84 *85 *@paramurl 请求路径86 *@paramparams 参数87 *@returnhttp响应状态及json结果88 */

89 public static HttpResult doDelete(String url, Mapparams) {90 CloseableHttpClient httpClient =HttpClients.createDefault();91 url =contactUrl(url, params);92 HttpDelete httpDelete = newHttpDelete(url);93 returnexecuteRequest(httpClient, httpDelete);94 }95

96 /**

97 * 拼装url98 *99 *@paramurl url100 *@paramparams 参数101 *@return

102 */

103 private static String contactUrl(String url, Mapparams) {104 if (params != null) {105 String param = "";106 Set keys =params.keySet();107 for(String key : keys) {108 String value =params.get(key);109 if (value == null || value.equals("null")) {110 continue;111 }112 param += key + "=" + value + "&";113 }114 if (!param.equals("")) {115 url += "?" + param.substring(0, param.length() - 1);116 }117 }118 returnurl;119 }120 private static String contactUrl_(String url, Mapparams){121 if(params != null){122 String param = "";123 Set keys =params.keySet();124 for(String key : keys){125 Object value =params.get(key);126 if(value == null || value.equals("null")){127 continue;128 }129 param += key + "=" + value + "&";130 }131 if(!param.equals("")){132 url += "?" + param.substring(0, param.length() - 1);133 }134 }135 returnurl;136 }137

138 public staticString getFullPath(HttpServletRequest request) {139 String basePath =request.getRequestURL().toString();140 String queryString =request.getQueryString();141 if(StringUtils.isNotEmpty(queryString)) {142 queryString = "?" +queryString;143 } else{144 queryString = "";145 }146

147 return basePath +queryString;148 }149

150 /**

151 * 执行GET/PUT/DELETE请求152 *153 *@paramhttpClient154 *@paramrequest155 *@return

156 */

157 private staticHttpResult executeRequest(CloseableHttpClient httpClient, HttpRequestBase request) {158 HttpResult result = null;159 request.setConfig(requestConfig);160 try{161 HttpResponse response =httpClient.execute(request);162 int code =response.getStatusLine().getStatusCode();163 result = newHttpResult();164 result.setStatus(code);165 if (code ==HttpStatus.SC_OK) {166 result.setResponse(EntityUtils.toString(response.getEntity()));167 }168 } catch(Exception e) {169 logger.error("=========GET/PUT/DELETE请求异常:" +request.getURI(), e);170 returnresult;171 } finally{172 try{173 httpClient.close();174 } catch(IOException e) {175 logger.error("=========GET/PUT/DELETE请求连接关闭异常:" +request.getURI(), e);176 }177 }178 logger.debug("========GET/PUT/DELETE请求响应:" + request.getURI() + "\n" +result);179 returnresult;180 }181

182 /**

183 * 执行POST请求184 *185 *@paramhttpClient186 *@paramrequest187 *@parampairs188 *@return

189 */

190 private static HttpResult executeRequest(CloseableHttpClient httpClient, HttpEntityEnclosingRequestBase request, Listpairs) {191 HttpResult result = null;192 request.setConfig(requestConfig);193 try{194 StringEntity entity;195 if (pairs.size() == 1 && pairs.get(0).getName().equals("json")) {196 entity = new StringEntity(pairs.get(0).getValue(), "UTF-8");197 entity.setContentType("application/json");198 } else{199 entity = new UrlEncodedFormEntity(pairs, "UTF-8");200 }201 request.setEntity(entity);202 HttpResponse response =httpClient.execute(request);203 int code =response.getStatusLine().getStatusCode();204 result = newHttpResult();205 result.setStatus(code);206 if (code ==HttpStatus.SC_OK) {207 result.setResponse(EntityUtils.toString(response.getEntity()));208 }209 } catch(Exception e) {210 logger.error("=========POST请求异常:" +request.getURI(), e);211 returnresult;212 } finally{213 try{214 httpClient.close();215 } catch(IOException e) {216 logger.error("=========POST请求连接关闭异常:" +request.getURI(), e);217 }218 }219 logger.debug("========POST请求响应:" + request.getURI() + "\n" +result);220 returnresult;221 }222 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值