Как сервер inputStream из URL в Spring Controller - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь построить контроллер Spring для обслуживания файла из URL:

@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 в моем AnnotationMethodHandlerAdaptor в конфигурации бина.

Однако, когда я вызываю эту страницу, я получаю бессмысленные строки, такие как "PHBYzT5QB ....". URL-адрес определенно доступен, и IOException не генерируется.Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Я думаю, что вы смешиваете несколько вещей здесь. Если файл, который вы хотите обслужить, доступен в вашей локальной файловой системе, вам не нужно читать по URL. Если вы определите сигнатуру вашего метода с помощью параметра HttpResponse, вы сможете получить OutputStream и записать в него. Конвертеры не нужны - просто читайте из одного потока (файла) и записывайте в другой цикл. Также важно установить в ответ правильный заголовок типа контента.

@RequestMapping...
public void getFile(HttpResponse resp) throws IOException {
  InputStream is = ... // get InputStream from your file
  resp.setContentType("text/html"); // or whatever is appropriate for your file
  OutputStream os = resp.getOutputStream();
  // now read from one stream and write to the other
  byte[] buffer = new byte[1024];
  int len = in.read(buffer);
  while (len != -1) {
    out.write(buffer, 0, len);
    len = in.read(buffer);
  }
}
0 голосов
/ 16 февраля 2012

я думаю, что это байтовый массив байтов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...