RestTemplate restTemplate // = ...;
// Optional Accept header
RequestCallback requestCallback = request -> request.getHeaders()
.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
// Streams the response instead of loading it all in memory
ResponseExtractor<Void> responseExtractor = response -> {
// Here I write the response to a file but do what you like
Path path = Paths.get("some/path");
Files.copy(response.getBody(), path);
return null;
};
restTemplate.execute(URI.create("www.something.com"), HttpMethod.GET, requestCallback, responseExtractor);
从前面提到的吉拉问题:
请注意,你不能简单地从提取器返回InputStream,因为到execute方法返回时,基础连接和流已经关闭。
Update for Spring 5
Spring 5引入了WebClient允许异步(例如,非阻塞)http请求的类。从文档:
与RestTemplate相比,WebClient是: