全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

HttpUtils 发送http请求工具类(实例讲解)

废话不多说,直接上代码

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import com.pingan.qhcs.map.audit.constant.CodeConstant;
import com.pingan.qhcs.map.audit.exception.MapException;

public class HttpClientUtil {

 protected static Log logger = LogFactory.getLog(HttpClientUtil.class);
 
 private static PoolingHttpClientConnectionManager cm;
 private static String EMPTY_STR = "";
 private static String UTF_8 = "UTF-8";

 private static void init() {
  if (cm == null) {
   cm = new PoolingHttpClientConnectionManager();
   cm.setMaxTotal(50);// 整个连接池最大连接数
   cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2
  }
 }

 /**
  * 通过连接池获取HttpClient
  * 
  * @return
  */
 public static CloseableHttpClient getHttpClient() {
  init();
  return HttpClients.custom().setConnectionManager(cm).build();
 }

 public static String httpGetRequest(String url) {
  HttpGet httpGet = new HttpGet(url);
  return getResult(httpGet);
 }

 public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {
  URIBuilder ub = new URIBuilder();
  ub.setPath(url);

  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  ub.setParameters(pairs);

  HttpGet httpGet = new HttpGet(ub.build());
  
  return getResult(httpGet);
 }

 public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)
   throws URISyntaxException {
  URIBuilder ub = new URIBuilder();
  ub.setPath(url);

  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  ub.setParameters(pairs);

  HttpGet httpGet = new HttpGet(ub.build());
  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }
  return getResult(httpGet);
 }

 public static String httpPostRequest(String url) {
  HttpPost httpPost = new HttpPost(url);
  return getResult(httpPost);
 }

 public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {
  HttpPost httpPost = new HttpPost(url);
  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
  return getResult(httpPost);
 }

 public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)
   throws UnsupportedEncodingException {
  HttpPost httpPost = new HttpPost(url);

  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }

  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));

  return getResult(httpPost);
 }

 public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)
   throws Exception {
  HttpPost httpPost = new HttpPost(url);

  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }
  httpPost.setEntity(new StringEntity(strBody, UTF_8));
  return getResult(httpPost);
 }
 
 private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {
  ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
  for (Map.Entry<String, Object> param : params.entrySet()) {
   pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
  }

  return pairs;
 }

 /**
  * 处理Http请求
  * 
  * setConnectTimeout:设置连接超时时间,单位毫秒。
  * setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
  * setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
  * 
  * @param request
  * @return
  */
 private static String getResult(HttpRequestBase request) {
  
  RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000)
    .setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();
  request.setConfig(requestConfig);// 设置请求和传输超时时间

  // CloseableHttpClient httpClient = HttpClients.createDefault();
  CloseableHttpClient httpClient = getHttpClient();
  try {
   CloseableHttpResponse response = httpClient.execute(request); //执行请求
   // response.getStatusLine().getStatusCode();
   HttpEntity entity = response.getEntity();
   if (entity != null) {
    // long len = entity.getContentLength();// -1 表示长度未知
    String result = EntityUtils.toString(entity);
    response.close();
    // httpClient.close();
    return result;
   }
  } catch (ClientProtocolException e) {
   logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());
   throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());
  } catch (IOException e) {
   logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());
   throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());
  } finally {

  }
  return EMPTY_STR;
 }

}

以上这篇HttpUtils 发送http请求工具类(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# http请求工具类  # java实现http请求工具类示例  # java发送HttpClient请求及接收请求结果过程的简单实例  # java发送http get请求的两种方法(总结)  # 给大家  # 连接池  # 连接数  # 时间内  # 希望能  # 这篇  # 多说  # 小编  # 大家多多  # 默认值  # message  # PoolingHttpClientConnectionManager  # conn  # BasicNameValuePair  # qhcs  # map  # EntityUtils  # pingan  # HttpClients  # HttpRequestBase 


相关文章: 设计网站制作公司有哪些,制作网页教程?  历史网站制作软件,华为如何找回被删除的网站?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何快速重置建站主机并恢复默认配置?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  已有域名和空间如何搭建网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  深圳网站制作案例,网页的相关名词有哪些?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  制作公司内部网站有哪些,内网如何建网站?  制作网站公司那家好,网络公司是做什么的?  建站之星导航菜单设置与功能模块配置全攻略  如何用已有域名快速搭建网站?  简历在线制作网站免费版,如何创建个人简历?  如何配置FTP站点权限与安全设置?  建站主机选购指南与交易推荐:核心配置解析  Swift中循环语句中的转移语句 break 和 continue  如何快速查询域名建站关键信息?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  宁波免费建站如何选择可靠模板与平台?  建站主机选哪家性价比最高?  怎么将XML数据可视化 D3.js加载XML  制作宣传网站的软件,小红书可以宣传网站吗?  网站制作软件有哪些,制图软件有哪些?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何自定义建站之星模板颜色并下载新样式?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  网站制作壁纸教程视频,电脑壁纸网站?  如何用AWS免费套餐快速搭建高效网站?  如何通过PHP快速构建高效问答网站功能?  建站ABC备案流程中有哪些关键注意事项?  建站主机类型有哪些?如何正确选型  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何用腾讯建站主机快速创建免费网站?  建站之星安装后如何自定义网站颜色与字体?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  图册素材网站设计制作软件,图册的导出方式有几种?  建站之星后台密码遗忘或太弱?如何重置与强化?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  成都网站制作报价公司,成都工业用气开户费用?  建站主机是否等同于虚拟主机?  Android自定义listview布局实现上拉加载下拉刷新功能  网站企业制作流程,用什么语言做企业网站比较好?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  网站代码制作软件有哪些,如何生成自己网站的代码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。