restTemplate学习笔记-20210226

之前用过很多次restTemplate,主要用的get请求和post请求的getForObject和postForObject方法
get请求一般我用的是:restTemplate.getForObject(String var1, Class var2)
参数分别为请求url,返回体类型
举个例子:
String forObject = restTemplate.getForObject(“https://www.baidu.com?userId=1111”, String.class);
对返回参数我习惯用String接收然后转成JSONObject,再具体操作(这里可以直接用JSONObject,个人习惯)。当然如果确定返回体的话,可以直接用返回体接收。
body = (JSONObject) JSON.parseObject(forObject);
get请求也可以restTemplate.getForObject(String var1, Class var2, Map<String, ?> var3)
第三个参数是请求入参,第一个参数的url要用占位符
HashMap hashMap = new HashMap();
hashMap.put(“userId”, “123456);
String forObject = restTemplate.getForObject(“https://www.baidu.com?userId={userId}”, String.class, hashMap);

post请求一般用的是 postForObject(URI url, @Nullable Object request, Class responseType)
参数跟getForObject的一样。
举例:
HashMap hashMap = new HashMap();
hashMap.put(“userId”, “123456);
String forObject = restTemplate.postForObject(”https://www.baidu.com“, hashMap, String.class);

最近用到get请求的时候,要求添加请求头,发现getForObject不能满足,于是去了解了一下。
应该用restTemplate.exchange方法。上述的两个方法在底层都是调的exchange。
还是举例:
HttpHeaders headers = new HttpHeaders();
headers.add(“Authorization”, authorization);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity entity = new HttpEntity<>(null, headers);
ResponseEntity exchange = restTemplate.exchange(requesturl, HttpMethod.GET, entity, String.class);
JSONObject body = (JSONObject) JSON.parseObject(exchange.getBody().toString());

最开始用的时候,看的exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class responseType, Object… uriVariables)
解释说httpEntity中装封装好的请求头和请求体,uriVariables中放入参。试了好几次,先后尝试过将入参hashmap放到httpEntity和uriVariables,都发现读不到请求体,最后是将入参拼在url链接中,然后那两个都没填,请求成功了。今天正好有空,顺手记录一下。

Life is fantastic!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值