2012-01-19 5 views
1

У меня есть 2 способа скачать изображение из Интернета, результатом является входной поток. , но один из этого сделает скачать изображение не получится, я не знаю, почему, здесь код есть ошибка:Какой метод http лучше всего подходит для Android?

  HttpGet get = new HttpGet(imageName); 
      HttpResponse response = (HttpResponse) httpClient.execute(get); 
      HttpEntity entity = response.getEntity(); 
      BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
      InputStream is = bufHttpEntity.getContent(); 

это еще один, который я использую:

 URL imageUrl = new URL(imageName); 
     conn = (HttpURLConnection) imageUrl 
       .openConnection(); 
     conn.setConnectTimeout(30000); 
     conn.setReadTimeout(30000); 
     conn.setInstanceFollowRedirects(true); 
     InputStream is = conn.getInputStream(); 

Мне интересно, может ли кто-нибудь сказать мне 1. Почему я использую метод 1, чтобы получить входной шаблон, который не может показать изображение. 2. Я видел, как кто-то сказал, что используйте httpclient, не используйте соединение. я не знаю причину ?? связь хуже, чем http-клиент?

Я использую в многопоточном окружении, метод два работает нормально, но метод не может.

ответ

0
public static Bitmap getimage(String imageUrl) { 

     Log.i("imageurl", imageUrl); 
     Bitmap bitmap = null; 
     BufferedInputStream bis = null; 
     InputStream is = null; 

     try { 
      String url = imageUrl; 
      URL myUrl = new URL(url); 
      HttpURLConnection conn = (HttpURLConnection) myUrl.openConnection(); 

      conn.setDoInput(true); 
      conn.connect(); 
      if (conn.getResponseCode() != 404) { 
       is = conn.getInputStream(); 
       bis = new BufferedInputStream(is, 8192); 
       bitmap = BitmapFactory.decodeStream(bis); 

      } 
      conn.disconnect(); 

     }catch (Exception e) { 
      Log.e("getImageData", e.toString()); 
      return bitmap; 
     } 
     finally{ 
      if (bis != null) 
      { 
       try{ 
        bis.close(); 
       }catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      if (is != null) 
      { 
       try { 
        is.close(); 
       }catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

     } 
     return bitmap; 
    } 
+0

use bufferedinputstream лучше ??? – rex

Смежные вопросы