博客
关于我
RestTemplate post请求
阅读量:562 次
发布时间:2019-03-10

本文共 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"));

 

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

好了,下课

转载地址:http://nowvz.baihongyu.com/

你可能感兴趣的文章
selenium+python之切换窗口
查看>>
重载和重写的区别:
查看>>
搭建Vue项目步骤
查看>>
账号转账演示事务
查看>>
idea创建工程时错误提醒的是architectCatalog=internal
查看>>
SpringBoot找不到@EnableRety注解
查看>>
简易计算器案例
查看>>
在Vue中使用样式——使用内联样式
查看>>
Find Familiar Service Features in Lightning Experience
查看>>
Explore Optimization
查看>>
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
查看>>
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
查看>>
小程序之wx:request(转)
查看>>
连接Oracle数据库经常报错?关于listener.ora和tnsnames.ora文件的配置
查看>>
解决数据库报ORA-02289:序列不存在错误
查看>>
map[]和map.at()取值之间的区别
查看>>
成功解决升级virtualenv报错问题
查看>>
【SQLI-Lab】靶场搭建
查看>>
Xception 设计进化
查看>>
【Bootstrap5】精细学习记录
查看>>