//请求参数 MultiValueMap
requestBody = new LinkedMultiValueMap<>(); requestBody.add("param1","dsdd"); requestBody.add("param2",""); //设置请求头 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
httpEntity = new HttpEntity
(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认证信息有效。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211793.html原文链接:https://javaforall.net
