RestTemplate post请求
发布日期:2021-05-13 01:13:06 浏览次数:12 分类:博客文章

本文共 2348 字,大约阅读时间需要 7 分钟。

以前一开始用原生的http请求,那叫一个累,后来找到一个第三方的工具包,用起来是真的舒服,不过有一说一,第三方工具包依赖性真的强,除非和组长商量过,不然能少用,还是少用点。话说搞微服务的肯定少不了和HTTP或RPC打交道的,以前了解过Spring 的RestTemplate,但是一旦实践就给忘光光了。不过经过几次折腾,总算是搞明白了。get请求就不说了,主要是说一下post请求。上代码:

 

1   RestTemplate restTemplate = new RestTemplate(); 2         HttpHeaders headers = new HttpHeaders(); 3         MultiValueMap
map = new LinkedMultiValueMap<>(); 4 map.add("subFun", CommConfig.Otrs_SubFun_CTIDUTYPERSON); 5 map.add("paramEncoded", base(params)); 6 //以form-data形式发送请求 7 headers.setContentType(MediaType.MULTIPART_FORM_DATA); 8 HttpEntity
> request = new HttpEntity<>(map, headers); 9 ResponseEntity
response = restTemplate.postForEntity(url, request, String.class);10 //对数据结果的处理11 return JSONObject.parseObject(response.getBody());

 

第一行是new一个对象

第二行是new一个头部信息

第三行是new一个map对象,注意要用LinkedMultiValueMap

第四、五行都是添加请求参数

第七行是设置请求方式,这里要特别注意,因为post有很多的发送方式,比如,json,form-data,xxx-form-data等,具体的点进去找就行了,里面也有注释说得很清楚

第八行是组装请求体

第九行是发送请求,注意String.class,如果你返回的参数属性确定,就可以用一个实体类来接收

第十一行是我把接收到的参数转为了json格式

这样一个最实用的post请求就出来了。由于我的代码中多处用到了post请求,所以我就拆分成一个方法,为啥不是工具类,因为我觉得他还不够灵活。上截图:

 

 

1     /** 2      * 发送post请求 3      * @param map 请求参数 4      * @param url 请求地址 5      * @return 响应结果 6      */ 7     public JSONObject post(MultiValueMap
map, String url) { 8 RestTemplate restTemplate = new RestTemplate(); 9 HttpHeaders headers = new HttpHeaders();10 //以form-data形式发送请求11 headers.setContentType(MediaType.MULTIPART_FORM_DATA);12 HttpEntity
> request = new HttpEntity<>(map, headers);13 ResponseEntity
response = restTemplate.postForEntity(url, request, String.class);14 //对数据结果的处理15 return JSONObject.parseObject(response.getBody());16 }

 

调用方式,组装好一个map,然后直接调用post()方法就好了

 

 

1         //1、RestTemplate发送http post请求2         MultiValueMap
map = new LinkedMultiValueMap<>();3 map.add("subFun", CommConfig.Otrs_SubFun_CTISTATISTICSCALLRECORD);4 map.add("paramEncoded", base(params));5 //2、拿到返回的数据,转换为JSONObject6 JSONObject results = post(map, resUrl("base","otrsUrlBase")+resUrl("base","otrsUrlInf"));

 

之所以说不够灵活,就是请求方式目前是固定的,没有分解出来。最近项目比较赶,没多少时间研究了,先这样子吧。

好了,下课

上一篇:idea java项目启动后访问html页面乱码
下一篇:LocalDateTime去掉T

发表评论

最新留言

不错!
[***.144.177.141]2025年04月09日 19时12分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C#批量上传图片 2019-03-10
【亚马逊运营】有关滞销库存的处理方法之站外清库存法! 2019-03-10
PyCharm使用笔记之同一目录下文件调用出现红线Unresolved Reference... 2019-03-10
pyhon中安装win32com模块 2019-03-10
C++错误笔记 2019-03-10
解决 MySQL 8.0 客户端连接 caching_sha2_password 问题 2019-03-10
【无线通信模块】GPRS DTU不稳定和容易掉线原因 2019-03-10
CSS(六)|页面布局之定位 2019-03-10
比特币(BSV)知识库:身份-BSVAlias 2019-03-10
比特币(BSV)知识库:网络-比特币测试用区块链(Bitcoin Test Blockchains) 2019-03-10
设计模式 - 2) 策略模式 2019-03-10
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型 2019-03-10
国标流媒体服务器以ROOT身份运行提示“permission denide”报错解决 2019-03-10
国标流媒体服务器在linux系统运行提示fork/exec ……/redis/redis-server错误解决方案 2019-03-10
国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误 2019-03-10
安防摄像机网页无插件直播方案EasyNVR关于接口调用出现401 Unauthorized问题的解决方法 2019-03-10
如何在农业或大棚内布置互联网安防监控系统实现智慧农业? 2019-03-10
【视频教程】EasyNVR如何将老版本的EasyNVR的数据迁移到4.0.0以上版本 2019-03-10
LeetCode 872 叶子相似的树[DFS 二叉树] HERODING的LeetCode之路 2019-03-10
qt中转到槽后如何取消信号与槽关联 2019-03-10