java - 带有 cookie 的 RestTemplate 客户端

标签 java spring http cookies resttemplate

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

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

最佳答案

RestTemplate有一个方法可以定义接口(interface)ResponseExtractor<T> ,该接口(interface)用于获取响应的 header ,一旦您拥有它们,您可以使用 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 - 带有 cookie 的 RestTemplate 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22853321/

相关文章:

java - 用随机数填充数组android/java

java - 如何编写正则匹配表达式。 -Java

java - Spring 表达式语言 (SpEL) : parse String to int

spring - HTTP 状态 404-未找到

java - 如何在没有 HibernateTemplate 的情况下轻松找到ByExample(对象实例)?

Java http 连接

java - 从 Java 6 中的 UTF-8 BOM 文件猜测文本编码

java - Activity之间如何同步数据?

c++ - libcurl 是否单次加载完整页面?

http - 通过 header 检查计算机是否被黑客入侵