sunmingtao / sample-code

3 stars 4 forks source link

RestTemplate doesn't send cookie along the request #226

Closed sunmingtao closed 3 years ago

sunmingtao commented 3 years ago
@Autowired private RestTemplate restTemplate;

public void home() {
  String url = "http://localhost:8081";
  HttpHeaders headers = new HttpHeaders();
  headers.add("Cookie", "aaa=11" );
  ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<HttpHeaders>  (headers) ,String.class);
  headers = responseEntity.getHeaders();
}
sunmingtao commented 3 years ago

The default rest template does not use a persistent connection

To quickly get it working:

public class CookieRestTemplate extends RestTemplate {

  @Override
  protected ClientHttpRequest createRequest(URI url, HttpMethod method) throws IOException {
    ClientHttpRequest request = super.createRequest(url, method);

    request.getHeaders().add("Cookie", "aaa=11");
    return request;
  }

https://stackoverflow.com/questions/10175649/resttemplate-and-cookie

I think it's more convenient to just use HttpClient