如何在Spring Boot应用程序中通过GET请求将请求体中的json数据发送到外部API

How to send json data in request body through GET request to external API in Spring Boot application

提问人:Khaski 提问时间:5/15/2023 更新时间:5/15/2023 访问量:139

问:

我必须将 json 数据发送到外部 api 才能发布方法从这个外部 api 获取数据。 我想发送的 JSON 数据就是这样。 { “key1” : “值1”, “key2” : “值2”, “key3” : “值3” } 如何在Spring Boot应用程序中通过GET请求将请求体中的json数据发送到外部API

弹簧

评论


答:

2赞 mattijah 5/15/2023 #1

如果 JSON 数据较大或包含特殊字符,则在 URL 中对整个 JSON 数据进行编码可能不切实际。最好使用 POST 请求而不是 GET 请求在请求正文中传输 JSON 数据。如果需要这样做,您可以尝试以下操作:

    public void sendData(String jsonData) throws URISyntaxException {
    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    String url = "https://yoururl.com/api?data=" + jsonData;
    RequestEntity<?> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI(url));

    ResponseEntity<String> responseEntity = restTemplate.exchange(requestEntity, String.class); // GET request
    String responseBody = responseEntity.getBody();

    // do your stuff
}

评论

0赞 Khaski 5/15/2023
我需要使用我的 Spring Boot 应用程序向外部应用程序发出请求,以便从中接收数据,但为了接收这些数据,我需要从我的应用程序以 json 格式发送数据。外部 API 发布后使用的方法,我的方法是 get ,但在我的应用程序中使用哪种方法并不重要。我该怎么做?
0赞 mattijah 5/15/2023
不建议这样做,因为此处的另一个答案中提到了这一点。我发布的代码可以工作,但是,根据 HTTP 协议标准不建议这样做。理想情况下,如果外部 API 需要 JSON 数据,则应使用 POST 请求而不是 GET 请求在请求正文中发送数据。
0赞 Khaski 5/15/2023
我理解。但是我如何用方法帖子做到这一点。你能举个例子吗?