RestTemplate 出现401错误


以下面post请求为栗子
使用RestTemplate 请求需要TOKEN认证的接口:

//请求参数
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("param1","dsdd");
requestBody.add("param2","3453465");

//设置请求头            
org.springframework.http.HttpHeaders headers = new org.springframework.http.HttpHeaders();
headers.set(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=utf-8");

//添加token认证
headers.set(HttpHeaders.AUTHORIZATION, "Bearer 12e3d012-783c-4650-9eb9-f8e2bdedfd8b");

HttpEntity<MultiValueMap> httpEntity = new HttpEntity<MultiValueMap>(requestBody,headers);
JSONObject json = restTemplate.postForObject("https://xxx/xxx/xxx", httpEntity, JSONObject.class);

  这个时候就会出现 org.springframework.web.client.HttpClientErrorException: 401 null

 原因在于调用的方法不对,不能调用postForObject(其他GET等等一样),这个方法的验证信息是不起作用的,具体原因请看官方文档,

正确的操作姿势

JSONObject json = restTemplate.exchange("https://xxx/xxx/xxx",HttpMethod.POST,httpEntity,JSONObject.class, new Object[]{}).getBody();

 到此,问题解决。

调用  restTemplate.exchange()方法,token认证信息有效。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值