RESTAPI для чтения изображения и преобразования в BLOB - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть служба 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)

Любая помощь для устранения исключения будет оценена

...