Я пытаюсь транслировать результат загрузку файла непосредственно в другой пост, используя RestTemplate
Spring RestTemplate ответ потокового в другой запрос
Мой нынешний подход весенний заключается в следующем:
ResponseEntity<InputStreamResource> downloadResponse = restTemplate.getForEntity(fileToDownloadUri, InputStreamResource.class);
InputStreamResource imageInputStreamResource = downloadResponse.getBody();
ResponseEntity<String> response = restTemplate.exchange(storageUri, POST, new HttpEntity<>(imageInputStreamResource), String.class);
Однако, я получаю следующее исключение:
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://host:port/path/some.jpg": stream is closed; nested exception is java.io.IOException: stream is closed
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:6
...
Caused by: java.io.IOException: stream is closed
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.ensureOpen(HttpURLConnection.java:3348)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3373)
Похоже, что ответ всегда закрыт как последний шаг обработки. С ответом HttpURLConnection
закрывается, и поток больше не обрабатывается.
Я хотел был бы иметь возможность осуществить этот сценарий без того, чтобы держать файл полностью в памяти или записать его в файл (как описано here).
Любые советы приветствуются.
возможно тождественное решение здесь http://stackoverflow.com/questions/15781885/ how-to-forward-large-files-with-resttemplate – Redlab
@Redlab там это 'FileSystemResource' - это сработало бы - моя проблема в том, что' InputStream' закрывается после завершения запроса 'GET'. Поэтому я не могу использовать его дальше. –