我正在用 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/