2012-12-08 40 views
2

以下是我放置REST GET調用的鏈接。 http://adtouch.cloudfoundry.com/rest/ad/barcode/529a927973654526a309a77986062566/image 在瀏覽器中打開它時,它會重定向到其他鏈接並顯示圖像。 我想在android上顯示此圖像。我無法確定此通話獲得的內容是什麼,以及如何將其轉換爲要在Android設備上顯示的圖片。通過REST調用獲取圖像並在Android上顯示

這是REST調用我做:

HttpClient httpclient = new DefaultHttpClient(); 
String temp = "http://adtouch.cloudfoundry.com/rest/ad/barcode/529a927973654526a309a77986062566/image"; 
HttpGet request = new HttpGet(temp); 
HttpResponse response = httpclient.execute(request); 
ResponseHandler<String> handler = new BasicResponseHandler(); 
String result = httpclient.execute(request, handler); 
System.out.println(result); 

這樣做的結果是一樣的字符衆多序列:

(^( ?( ;QE??QE??ÊMÔâ1MT ??²¤i­@íù¨ùhÙQ¶ê??m7Í¡?mFÏ@3|µu]¿Þ§+Uò?\°Ñ³Qçý?o?MiUWt?*¯÷?ª9Jæ·û´Ý¿59_åùi¬Õq$jE¨)ÿ??Á@D°?©ËÒªÆß7Þ«?õ q?/ÉR+Tr%F?¨(·LÙQ­9]¨Ê´í?½;}??5???¨ßE??º?ôúc÷ ?·éGÍíFæZ??M­K·ûÔè÷?Þ©<¥Û@Æ?ýÚ±üÕEJ7l O?Z³YêÄÒï¨ÕhK{}ë¹¾íZ?>U¨c}[email protected]ðüÍM2®>\·û´??í?l¨ÿ??xß«NUþón }Ênÿ??î­9UR???nÖ?Å·ýÚo?¿Ä»¿Þ©(

我知道如何將圖像設置爲ImageView的,但問題是如何從這個調用中獲得圖像。

回答

4

看看Javadoc的BitmapFactory。您必須在HTTP響應的實體流進行解碼:

InputStream in = client.execute(request).getEntity().getContent(); 
Bitmap bmp = BitmapFactory.decode(in); 
in.close(); 

注意網絡的操作應在主線程不會發生。從你的代碼中,不清楚你是否使用AsyncTask,但是你應該。更新onPostExecute()鉤子中的圖像。

+0

您還可以通過使用優秀的Url​​ImageViewHelper庫來簡化這一過程,該庫將自動下載,緩存並在ImageView中顯示圖像。 https://github.com/koush/UrlImageViewHelper – berwyn

+1

Thanks @Raffaele。有用。只是一個小小的改變。我使用的是Google API級別16,因此它應該是位圖bmp = BitmapFactory.decodeStream(in); – darsheets

相關問題