2

URLでhttpリクエストを実行しようとしています。応答の本文にビットマップが含まれていると思っていましたが、次のエラーが表示されます。

03-13 22:54:36.106: W/System.err(26547): org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [android.graphics.Bitmap] and content type [image/jpg;charset=utf-8]
03-13 22:54:36.106: W/System.err(26547):    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:79)
03-13 22:54:36.116: W/System.err(26547):    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:655)
03-13 22:54:36.116: W/System.err(26547):    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:641)
03-13 22:54:36.116: W/System.err(26547):    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:484)
03-13 22:54:36.116: W/System.err(26547):    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
03-13 22:54:36.116: W/System.err(26547):    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
03-13 22:54:36.116: W/System.err(26547):    at com.hera.ooshopping.AsyncPicLoading.getFileFromServer(AsyncPicLoading.java:174)
03-13 22:54:36.116: W/System.err(26547):    at com.hera.ooshopping.AsyncPicLoading.doInBackground(AsyncPicLoading.java:65)
03-13 22:54:36.116: W/System.err(26547):    at com.hera.ooshopping.AsyncPicLoading.doInBackground(AsyncPicLoading.java:1)

エラーから、応答は JPG (最初の行) のように見えますが、よくわかりません。文字列への応答を解析できます。これにより、base64 ではなく、奇妙な文字で巨大な文字列が作成されます。

使用可能なビットマップまたは画像に応答本文を解析するにはどうすればよいですか? 私は本当にそれを取得しません。リクエストを含む私のコードは次のとおりです。

HttpBasicAuthentication authHeader = new HttpBasicAuthentication(user.getUsername(), user.getPassword());
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAuthorization(authHeader);

HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
System.out.println("entity:" + requestEntity.toString());

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
restTemplate.getMessageConverters().add(new ResourceHttpMessageConverter());

try {
    // GET Request
    ResponseEntity<Bitmap> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Bitmap.class);

    return response.getBody();
} catch (Exception e) {
    e.printStackTrace();
    return null;
}
4

1 に答える 1

0

私はちょうど同じ問題に遭遇しました。

をビットマップにResourceHttpMessageconverter直接変換することはできません。Resource代わりに、これを使用してビットマップを作成できます。

ResponseEntity<Resource> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Resource.class);
Bitmap bitmap = BitmapFactory.decodeStream(response.getBody().getInputStream());

このコードは私にとってはうまくいきます。問題が解決するかどうかお知らせください。

于 2013-05-09T19:36:26.480 に答える