带有JSON正文的GET方法和带有RestTemplate的承载授权

时间:2019-04-12 20:31:46

标签: json spring-boot get resttemplate

我知道。...这不是最佳做法,但是我被要求这样做:

我正在尝试获取一个端点,该端点接收带有3个参数json的{​​{1}}主体并具有承载身份验证。

标题

(int, int, int)

实体

header.setContentType(MediaType.APPLICATION_JSON);
header.set("authorization", bearerToken);

RestTemplate

HttpEntity<String> entity = new HttpEntity<>(requestjson.toString(), header);

System.out.print(entity):

ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);

除安全性和所有此类问题外,请求通过<{"1stParam":1,"2ndParam":4881,"3rdParam":0},{Content-Type=[application/json], authorization=[Bearer bearerToken]}> 显示了400 HTTP response 邮递员工作正常

我也尝试过RestTemplate,但是有同样的问题。

谢谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我刚刚编写了一个类似的解决方案,所以我很确定自己知道这是什么。您必须在Bearer标头中包含Authorization。我认为此代码更改将解决您的问题:

header.set("Authorization", "Bearer " + bearerToken);

我将标题键大写。我认为这并不重要,但我知道大写字母版本仅对我有用。我的代码看起来像这样,并且可以正常工作。

这里的基本思想是Authorization头必须始终以执行的授权类型开始,以便服务器可以知道您要使用的类型。有意义的是,这是一个400错误而不是404,因为标头在技术上是错误的。