使用 JSON 请求通过 REST 模板发送 GET 请求 body 绑定元素失败必须是结构错误?

sending GET request via REST template with JSON request body getting failed with binding binding element must be a struct error?

我正在尝试使用带有 JSON 请求 body 的 REST 模板发送 GET 请求,但请求因错误而失败,

processing failedorg.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: [code=400, message=binding element must be a struct]

我尝试使用 insomnia 到达终点并且请求成功通过,我在那里放了 2 headers

1. Content-Type - application/json
2. Authorization - Bearer ******

还有 JSON body.

我在 spring 引导中的代码如下所示。

    ResponseEntity<String> responseObject = null;
    String URL = "https://myurl/endpoint";
    String requestBody = "{\"requestType\":\"status\"}";
    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization","Bearer ***");
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity httpEntity = new HttpEntity<>(body,headers);
    System.out.println(httpEntity+" httpEntity");
    System.out.println(headers+" headers");
    responseObject = restTemplate.exchange(URL, HttpMethod.GET, httpEntity, String.class);

httpentity 和 header 的 sout 看起来像这样

httpEntity

<{"requestType":"status"},[Authorization:"Bearer *******************", Content-Type:"application/json"]>

headers

[Authorization:"Bearer *************************", Content-Type:"application/json"]

此外,当我尝试使用 rest 模板将没有 body 的请求发送到另一个端点时,它已成功执行,所以我认为我发送 body 的方式有些问题与错误有关。

rest 模板不支持带 body 的 get 请求。更多详情请参考this article.

如果您使用的是 Java 11,我建议您使用 java.net.HttpClient 来满足您的需求。