HTTP get with headers using RestTemplate

后端 未结 2 474
别那么骄傲
别那么骄傲 2020-12-07 22:19

How can I send a GET request using the Spring RestTemplate? Other questions have used POST, but I need to use GET. When I run this, the program continues to work, but it see

相关标签:
2条回答
  • 2020-12-07 22:37

    The RestTemplate getForObject() method does not support setting headers. The solution is to use the exchange() method.

    So instead of restTemplate.getForObject(url, String.class, param) (which has no headers), use

    HttpHeaders headers = new HttpHeaders();
    headers.set("Header", "value");
    headers.set("Other-Header", "othervalue");
    ...
    
    HttpEntity entity = new HttpEntity(headers);
    
    ResponseEntity<String> response = restTemplate.exchange(
        url, HttpMethod.GET, entity, String.class, param);
    

    Finally, use response.getBody() to get your result.

    This question is similar to this question.

    0 讨论(0)
  • 2020-12-07 22:43

    Take a look at the JavaDoc for RestTemplate.

    There is the corresponding getForObject methods that are the HTTP GET equivalents of postForObject, but they doesn't appear to fulfil your requirements of "GET with headers", as there is no way to specify headers on any of the calls.

    Looking at the JavaDoc, no method that is HTTP GET specific allows you to also provide header information. There are alternatives though, one of which you have found and are using. The exchange methods allow you to provide an HttpEntity object representing the details of the request (including headers). The execute methods allow you to specify a RequestCallback from which you can add the headers upon its invocation.

    0 讨论(0)
提交回复
热议问题