に私は、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);
}
私は豆の設定で私のAnnotationMethodHandlerAdaptorでByteArrayHttpMessageConverterを持っています。
しかし、私はこのページを呼び出すときに、私は のような無意味な文字列を取得しています「PHBYzT5QBを....」 URLは間違いなく到達可能であると何にIOExceptionがスローされませんでした。 私はここで何が欠けていますか?
ご回答ありがとうございます。混乱して申し訳ありませんが、ファイルは実際にはサーバーです。私はこれをwww.google.comに置き換えて明確にします。 IOUtils.toByteArrayはコードとまったく同じことを行い、content-typeも設定しました。 – ltfishie
うわー、私は基本にとどまっていたはずです。 HttpResponseを使用して実際に動作します。私はあなたに答えを後で与えますが、これはResponseEntityでこれがどのように行われるのか見たいのですが、これは多くのソースで私が読んでいることから言われています。 –
ltfishie
ResponseEntityのアプローチが機能しても、ファイル全体が同時にメモリに保存される必要があるため、ストリームを扱うよりも劣っていると思います。大きなファイルや些細な要求に対しては望ましくないか不可能です。 – maximdim