У меня есть служба API отдыха, которая будет возвращать изображение в ответ.
Ниже моего кода
@RequestMapping(value = "/sid/{id}", method = RequestMethod.GET,
produces = MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity < InputStreamResource > getImage(@PathVariable Integer id) throws IOException {
ClassPathResource imgFile = null;
if (id == 1) {
imgFile = new ClassPathResource("image/sid1.jpg");
}
if (id == 2) {
imgFile = new ClassPathResource("image/sid2.jpg");
}
return ResponseEntity
.ok()
.contentType(MediaType.IMAGE_JPEG)
.body(new InputStreamResource(imgFile.getInputStream()));
}
Мне нужно написать клиентский код, который будет использовать указанные выше остальные API, чтобы получить изображение, преобразовать в BLOB-объект и вставить в БД.
мой код клиента
public void getEntity(){
System.out.println("Begin /GET request!");
String getUrl = "http://localhost:8080/sid/1";
ResponseEntity<InputStreamResource> getResponse = restTemplate.getForEntity(getUrl, InputStreamResource.class);
if(getResponse.getBody() != null){
///stuck here
}else{
System.out.println("Response for Get Request: NULL");
}
}
Я не уверен, как действовать с кодом клиента, так как нужно прочитать изображение.
Любые выводы будут хороши
Заранее спасибо
Обновление:
Когда я пытаюсь преобразовать входной поток в массив байтов, используя код ниже, я получаю исключение
public void getEntity() throws IllegalStateException, IOException{
System.out.println("Begin /GET request!");
String getUrl = "http://localhost:8080/sid/1";
ResponseEntity<InputStreamResource> getResponse = restTemplate.getForEntity(getUrl, InputStreamResource.class);
if(getResponse.getBody() != null){
InputStream is=getResponse.getBody().getInputStream();
System.out.println("Begin /GET request!"+is);
byte[] bytes = IOUtils.toByteArray(is);
}else{
System.out.println("Response for Get Request: NULL");
}
}
Мое исключение
Exception in thread "main" java.io.IOException: stream is closed
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.ensureOpen(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at java.io.PushbackInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2146)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2102)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2123)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:2078)
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:721)
Любая помощь для устранения исключения будет оценена