我想建立一个Spring控制器为来自URL的文件:如何从服务器URL的inputStream春季控制器
@RequestMapping(value = "/test", method = RequestMethod.GET)
public ResponseEntity<byte[]> getFile() throws IOException {
CommonHttpClient client = new CommonHttpClient();
URL url = new URL("http://www.google.com");
InputStream stream = url.openStream();
final HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "text/html");
return new ResponseEntity<byte[]>(IOUtils.toByteArray(stream), headers, HttpStatus.CREATED);
}
我有ByteArrayHttpMessageConverter在我的bean配置AnnotationMethodHandlerAdaptor。
然而,当我把这个页面,我得到无意义的字符串像 “PHBYzT5QB ......” 的网址是绝对访问,并没有IOException异常被抛出。 我在这里错过了什么?
感谢您的回答。对不起,任何混淆,该文件确实是一个服务器。我会用www.google.com替换它以清楚说明。 IOUtils.toByteArray和你的代码完全一样,我也设置了内容类型。 – ltfishie 2012-02-16 04:09:24
哇,我应该保持基本。使用HttpResponse确实有效。我会在稍后给你答案,但我想看看如何使用ResponseEntity来完成这项工作,因为它在我阅读过的很多来源中都有提及。 –
ltfishie
2012-02-16 04:30:06
即使ResponseEntity的方法有效,我认为它会比使用流更差,因为整个文件需要同时保存在内存中,这对于大文件或更重要的请求速率来说是不可取的或不可能的 – maximdim 2012-02-16 12:07:06