当前位置: 首页 > news >正文

海淘网站主要关键词重庆营销型网站建设公司

海淘网站主要关键词,重庆营销型网站建设公司,作一手房用什么做网站,广州市新冠肺炎疫情最新消息项目中经常会用到向第三方系统发送请求来传递数据或者获得信息&#xff0c;一般用的比较多的为HttpClient 和 HttpRequest&#xff0c;这里简要总结一下 HttpClient 和 HttpRequest 的用法 一、HttpClient 1. 发送get请求 public static String get(String url, Map<Stri…

项目中经常会用到向第三方系统发送请求来传递数据或者获得信息,一般用的比较多的为HttpClient 和 HttpRequest,这里简要总结一下 HttpClient 和 HttpRequest 的用法

一、HttpClient

1. 发送get请求

public static String get(String url, Map<String, String> headMap, int timeout) {String result = null;CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;try {HttpGet httpGet = new HttpGet(url);RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout).build();httpGet.setConfig(requestConfig);setHead(httpGet, headMap);response = httpclient.execute(httpGet);HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity, "UTF-8");EntityUtils.consume(entity);} catch (Exception e) {LOG.error("HttpGet [{}] error: {}", url, e.getMessage(), e);throw new RuntimeException(e.getMessage(), e);} finally {try {if (null != response) {response.close();  }httpclient.close();} catch (IOException e) {LOG.error("HttpGet [{}] httpclient close error: {}", url, e.getMessage(), e);}}return result;
}

1. 发送post请求

public static String postJson(String url, String body, Map<String, String> headMap, int timeout) {CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;try {HttpPost httpPost = new HttpPost(url);httpPost.addHeader("Content-Type", "application/json;charset=utf-8");setHead(httpPost, headMap);RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout).build();httpPost.setConfig(requestConfig);httpPost.setEntity(new StringEntity(body, "UTF-8"));response = httpClient.execute(httpPost);HttpEntity entity = response.getEntity();String responseContent = EntityUtils.toString(entity, "UTF-8");EntityUtils.consume(entity);return responseContent;} catch (Exception e) {LOG.error("HttpPostJson [{}] error: {}", url, e.getMessage(), e);throw new RuntimeException(e.getMessage(), e);} finally {try {response.close();httpClient.close();} catch (IOException e) {LOG.error("HttpPostJson [{}] httpclient close error: {}", url, e.getMessage(), e);}}
}
private static void setHead(HttpRequestBase httpRequestBase, Map<String, String> headMap) {if (headMap != null && headMap.size() > 0) {Set<String> keySet = headMap.keySet();for (String key : keySet) {httpRequestBase.addHeader(key, headMap.get(key));}}
}

优点:连接池(复用HTTP连接)、重试、代理机制,社区活跃,性能更加优异

缺点:配置和API使用较为复杂

二、HttpRequest

1. 发送get请求

public static String get(String methodName, String url, Map<String, Object> paramMap, Map<String, String> headers){return HttpRequest.get(url).addHeaders(headers).form(paramMap).execute().body();
}

2. 发送post请求

public static String postForm(String methodName, String url, Map<String, Object> paramMap, Map<String, String> headers, String paramStr){return HttpRequest.post(url).addHeaders(headers).form(paramMap).body(paramStr).execute().body();
}

优点:功能简单,整体比较易用

缺点:性能一般,社区支持较弱

三、对比

hutool 的 HttpRequest 底层是基于 HttpClient 的,是对其进行了封装,提供了更加简便的API请求,使用 HttpRequest 可在一行代码中实现发送简单的HTTP请求,如果需要使用 HttpClient 更加复杂的操作,则可以通过自定义 HttpClient 并通过 setHttpClient() 方法传入 HttpClient

例如通过自定义Httpclient实现设置最大连接数量

// 创建连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(100); // 设置最大连接数
connectionManager.setDefaultMaxPerRoute(20); // 设置每个路由的最大连接数// 创建自定义的HttpClient
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create().setConnectionManager(connectionManager);// 使用 Hutool 的 HttpRequest 发送请求
HttpResponse response = HttpRequest.get("https://example.com").timeout(5000) // 设置超时时间.setHttpClient(httpClientBuilder.build()) // 设置自定义的HttpClient.execute();

总结

  1. 小型简单项目可使用 HttpRequest 快速请求,较大型复杂项目适合使用 HttpClient
  2. HttpClient 引入 httpclient 依赖,HttpRequest 引入 hutool 依赖
  3. 如果有连接池、重试、代理等机制的需求则可使用 HttpClient
  4. 高性能,高并发,有复杂Http操作的场景则可使用 HttpClient
http://www.15wanjia.com/news/39219.html

相关文章:

  • png图片可以做网站图标吗免费网站提交入口
  • 利用wps做网站江西seo推广
  • 国内坚持做正品的网站深圳十大教育培训机构排名
  • 广州怎么做网站电商培训心得
  • 网站首页策划商业软文案例
  • 赌博网站游戏怎么做做销售找客户渠道
  • 宜昌网站seo公司网站代运营推广
  • 网站推广的预算整合营销的概念
  • 湛江市建网站百度视频下载
  • 常州做企业网站网上交易平台
  • 招聘 负责网站开发网址域名查询
  • 北京环评在那个网站上做阿里域名购买网站
  • 免费建站网站seoseo网络推广招聘
  • 做域名代理网站百度快照怎么优化排名
  • 集团网站建设特点互联网课堂百度seo建议
  • 不会写代码怎么做网站电商网站建设 网站定制开发
  • 无网站做cpa推广哪家网络营销好
  • wordpress反广告屏蔽重庆网站seo诊断
  • 柳州建设网经济适用房马鞍山网站seo
  • wordpress网站加速google关键词推广
  • 企业网站建设完整教程怎么弄属于自己的网站
  • 中国网新闻中国seo关键词优化工具
  • 陕西恒业建设集团网站南通网络推广
  • 中国人做暧暧视频网站网络营销的基本方法有哪些
  • 孵化器网站建设方案seo外链专员工作要求
  • 怎么在凡科做自己网站拉新平台
  • 怎么找网站的后台地址郑州seo优化大师
  • 什么网站可以免费做视频软件百度平台我的订单查询在哪里
  • 网站活动怎么做哈尔滨优化推广公司
  • asp网站 打开网络营销是网上销售吗