java – 带有cookie的RestTemplate客户端

我正在用Java编写一个简单的客户端,以允许可重用​​使用通过RESTful API访问的专有病毒扫描软件.要上传用于扫描API的文件,需要POST for Connect,然后使用POST将文件发布到服务器.在对Connect POST的响应中,服务器设置了cookie,需要在后续POST中出现以发布文件.我目前正在客户端使用Spring RestTemplate.

我的问题是如何访问响应中的cookie以便在后续POST中转发回服务器?我可以看到它们存在于返回的标题中,但ResponseEntity上没有方法可以访问它们.

解决方法:

RestTemplate有一个方法,您可以在其中定义Interface ResponseExtractor< T>,此接口用于获取响应的标头,一旦您拥有它们,您可以使用HttpEntity将其发回并再次添加.

 .add("Cookie", "SERVERID=c52");

尝试这样的事情.

String cookieHeader = null;

new ResponseExtractor<T>(){
      T extractData(ClientHttpResponse response) {
        response.getHeaders();
      }
}

然后

  HttpHeaders headers = new HttpHeaders();
  headers.add("Cookie", cookieHeader );

  ResponseEntity<byte[]> response = restTemplate.exchange("http://example.com/file/123",
      GET,
      new HttpEntity<String>(headers),
      byte[].class);

另请阅读此post

上一篇:Java Spring resttemplate字符编码


下一篇:Java异常处理008:RestTemplate请求Could not extract response: no suitable HttpMessageConverter found for res