2016-04-22 298 views
0

Я пытаюсь отдохнуть. Позвоните, используя джерси-клиент. Основываясь на api docs, запрос возвращает изображение как двоичные данные. Когда я делаю остальное Получить вызов с помощью почтальона, я могу вернуть реальное изображение (im asumming postman преобразует двоичный файл обратно в image/png). Это следующие заголовки, которые возвращаются из почтальона.Как двоичные данные получить ответ с помощью джерси-клиента?

enter image description here

Я стараюсь сделать все остальное Получить с помощью клиента джерси в Java. Вот мой код:

private Client client = ClientBuilder.newClient(new ClientConfig().register(LoggingFilter.class).register(MultiPartFeature.class)); 
private WebTarget myServer; 

myServer= client.target(baseURL); 

public void restGetImage(String requestURL, String headers) { 

    BufferedReader br = null; 
    StringBuilder sb = new StringBuilder(); 

    String line; 

    MultivaluedMap<String, Object> userHeaders = storeHeadersInMap(headers); 

    WebTarget target = getWebTarget().path(requestURL); 

    Response response = target.request(MediaType.APPLICATION_OCTET_STREAM) 
        .headers(userHeaders) 
        .get(); 

    System.out.println("Reuqest URL: " + session.get("baseurl") + requestURL); 
    int responseCode = response.getStatus(); 
    InputStream inputStream = response.readEntity(InputStream.class); 

    String contentType = response.getHeaderString("Content-Type"); 

//  br = new BufferedReader(new InputStreamReader(inputStream)); 
//  
//  try { 
    //   while((line = br.readLine()) != null) { 
    //    sb.append(line); 
//   } 
    //    
//   br.close(); //close buffered reader 
    //   
//  } catch (IOException e) { 
//   e.printStackTrace(); 
//   
//  } 
//  
//  RestResponse data = new RestResponse(responseCode, sb.toString(), contentType); 
//  data.setResponseHeader(response.getHeaders()); 
//  
//  System.out.println("response code: " + responseCode); 
//  System.out.println("response Content-Type: " + contentType); 
//  System.out.println("Response body: " + sb.toString()); 

//  return data; 
    } 

Прошу прощения за все комментарии, потому что я все еще тестирую код. В основном код возвращает 200 ответов, но когда он не может прочитать ответ. Он генерирует исключение в InputStream inputStream = response.readEntity (InputStrean.class).

Apr 22, 2016 11:37:29 AM   
org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderIn 
terceptor aroundReadFrom 
SEVERE: MessageBodyReader not found for media type=image/png, type=class 
com.itextpdf.text.pdf.codec.Base64$InputStream, genericType=class 
com.itextpdf.text.pdf.codec.Base64$InputStream. 

Моя цель - уметь считывать данные двоичного ответа. Любое понимание исходит. Благодарю.

ответ

3

СИЛЬНЫЙ: MessageBodyReader не найден для медиа типа = изображения/PNG, типа = класс
com.itextpdf.text.pdf.codec.Base64 $ InputStream, GenericType = класс
com.itextpdf.text.pdf .codec.Base64 $ InputStream.

Вы используете неправильный класс InputStream. Вы должны использовать java.io.InputStream. Проверьте и исправьте импорт.

+0

omg ваше право! Огромное спасибо. Такая глупая ошибка. Я был так смущен. – simhuang