HttpClient发送put与post请求代码实例与解析
/**
* 实例化HttpClient
* maxTotal 最大连接数
* maxPerRoute 最大并发量
* socketTimeout 从服务器读取数据超时时间
* connectTimeout 和服务器建立连接超时时间
* connectionRequestTimeout 从连接池获取连接的超时时间
* @return
*/
public static HttpClient createHttpClient(int maxTotal, int maxPerRoute, int socketTimeout, int connectTimeout,
int connectionRequestTimeout) {
RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout).setConnectionRequestTimeout(connectionRequestTimeout).build();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
//设置整个连接池最大连接数 根据自己的场景决定
cm.setMaxTotal(maxTotal);
//这个是控制并发量的
cm.setDefaultMaxPerRoute(maxPerRoute);
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
.setDefaultRequestConfig(defaultRequestConfig).build();
return httpClient;
}
这里的参数根据自己的实际情况来设定,这种调用一般都是外部调用,考虑到双方协调性问题最好并发量不要设置特别大,调用不要特别频繁,最好每天控制调用数量。
public static String sendPostForCaice(HttpClient httpClient, String url, Map<String, String> params, Charset encoding) {
String resp = "";
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8");
if (params != null && params.size() > 0) {
StringEntity se = new StringEntity(JsonUtil.toJson(params), encoding);
httpPost.setEntity(se);
}
CloseableHttpResponse response = null;
try {
response = (CloseableHttpResponse) httpClient.execute(httpPost);
if(response!=null && 200 == response.getStatusLine().getStatusCode()){
resp = EntityUtils.toString(response.getEntity(), encoding);
}
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (response != null) {
try {
response.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
return resp;
}
该方法用于发送post请求,JsonUtil.toJson(params)作用是把map转换为json类型的String字符串,最后发送请求,得到返回结果
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 这个头部信息是根据双方约定来设置。
public static String sendPut(HttpClient httpClient, String url,String authorization,Map<String, String> params,Charset encoding){
HttpPut httpPut = new HttpPut(url);
//header存放 LPCC_TOKEN
httpPut.addHeader(Const.AUTHORIZATION,"jwt "+authorization);
httpPut.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8");
if (params != null && params.size() > 0) {
StringEntity se = new StringEntity(JsonUtil.toJson(params), encoding);
httpPut.setEntity(se);
}
HttpResponse httpResponse = null;
String res = null;
try {
httpResponse = httpClient.execute(httpPut);
if(httpResponse!=null && 200 == httpResponse.getStatusLine().getStatusCode()){
res = EntityUtils.toString(httpResponse.getEntity(), encoding);
}
} catch (ClientProtocolException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
return res;
}
该方法是发送put请求,代码基本和post请求没什么区别。
这里再说一下如果要发送get请求,基本代码也是这样,只是get请求不需要设置请求参数的StringEntity,参数都追加到url后面。
HttpClient发送put与post请求代码实例与解析相关推荐
- httpsrequest java_java 发送http和https请求的实例
HTTP请求: 如果需要Json格式的自己转下,度娘上N种姿势- //处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或&quo ...
- 前端发送http的get请求 - 代码篇
前端html发送http GET请求(含案例 .含代码) 资料文献地址: 资料文献 . jQuery.get().jQuery.post() 分类:快捷方法 案例 · 代码: <!DOCTYPE ...
- Java实现HttpClient发送GET、POST请求(https、http)
原文链接:https://www.cnblogs.com/klslb/p/9121276.html 1.maven <dependency><groupId>org.apach ...
- HttpClient 发送 HTTP、HTTPS 请求的简单封装
序 近期这几周.一直在忙同一个项目.刚開始是了解需求.需求有一定了解之后,就開始调第三方的接口.因为第三方给提供的文档非常模糊,在调接口的时候,出了非常多问题,一直在沟通协调,详细的无奈就不说了,因为 ...
- Android使用Apache HttpClient发送GET、POST请求
2019独角兽企业重金招聘Python工程师标准>>> 简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session.Coo ...
- HttpClient发送POST和GET请求
1.使用HttpClient添加的maven依赖(尽量版本平齐或者比我的高,低的可能会出现找不到类的情况) <dependency><groupId>org.apache.ht ...
- Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)
场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...
- postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...
奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了. 可奇怪的是我们的请求在运 ...
- .NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部?
奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了.可奇怪的是我们的请求在运行 ...
最新文章
- 机器学习中的偏差和方差是什么?
- ASP.NET AJAX 1.0 发布
- eclipse中编辑properties文件无法看到中文
- 涡流探伤仪计算机软件,册亨通过式涡流探伤仪涡流探伤仪保养
- 大数据WEB阶段 后台和页面之间传递日期格式数据的400问题
- Expression Blend 定义RadioButton行为动画
- 一键对频对讲机好吗_对讲机的基础知识你都知道多少呢?
- 这么香的技术还不快点学起来,含BATJM大厂
- win10子系统linux编译ffmpeg
- JavaScript实现封闭区域布尔运算
- android P版本ro.build.date时间修改
- 《BI那点儿事》数据流转换——透视
- ce修改面板属性_脑叶公司员工属性CE修改教程
- 随机数生成器python_Python中的随机数生成器
- Android音量设置流程干货版
- zookeeper 与dubbo管理平台Window 安装与使用
- PHP连接MySQL查询结果中文显示乱码问题
- 计算机辅助园林设计ps,《CAD PS辅助园林设计》课程教学大纲.doc
- 使用腾讯位置服务 JavaScript API GL 打造自己的 3D 地图
- [note] 电磁场和微波课组(一)——电磁学(电学部分)
热门文章
- SQL limit用法
- mysql脑裂_keepalived的脑裂问题
- cas 4.1.5 添加验证码 亲测成功
- java中System.Properties的用法
- iReport3.0.0属性说明
- 基于java‘网上宠物店计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- XSLFormatter应对大部头出版物的排版软件
- 大数据Flink(四十五):​​​​​​扩展阅读 双流Join
- 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案
- 关于人工智能不会使大脑变懒惰的议论文_家长学校 | 家长进课堂,带“变”入校园...