2010-11-18 11 views
3

Başlık oldukça açıklayıcı. Android FileNotFound Exception - Dosya biçiminde olmayan resim URL'sinden getInputStream alınamıyor

Aşağıdaki kod

...: url dosya biçimini içermiyorsa

URL imageUrl = new URL(url); 
    try { 
       HttpURLConnection conn= (HttpURLConnection)imageUrl.openConnection(); 
       conn.setDoInput(true); 
       conn.connect(); 
       int length = conn.getContentLength(); 
       InputStream is = conn.getInputStream(); 
       return BitmapFactory.decodeStream(is); 
      } catch (IOException e) { 
      e.printStackTrace(); 
      } 

başarısız olacak. Örneğin, google tarafından barındırılan bazı görseller görüntüyü gösterecek, ancak URL'nin bir parçası olarak dosya biçimine (.png, .jpg, vb.) Sahip olmayacaktır. Sonuç olarak, url bağlantısının içerik türü başlığı "text/html" değerini döndürür. Bu sorunun olduğuna inanıyorum.

Yeni bir içerik türü başlığı ayarlamayı denedim, ancak hiçbir şey değişmiyor gibi görünüyor.

Bir geçici çözüm bilen var mı?

Teşekkürler.

+0

Eğer başarısız örnek bir URL verebilir benim son çözüm oldu? –

cevap

7

Ben sorunlarla koşuyordu ve ben etrafında googling hatırladı ve bu

 try { 
      URL url = new URL(imageUrl); 
      HttpGet httpRequest = null; 

      httpRequest = new HttpGet(url.toURI()); 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); 

      HttpEntity entity = response.getEntity(); 
      BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
      InputStream input = bufHttpEntity.getContent(); 

      Bitmap bitmap = BitmapFactory.decodeStream(input); 

      ImageActivity.this.i.setImageBitmap(bitmap); 
      ImageActivity.this.i.refreshDrawableState(); 
      input.close(); 

     } catch (MalformedURLException e) { 
      Log.e("ImageActivity", "bad url", e); 
     } catch (Exception e) { 
      Log.e("ImageActivity", "io error", e); 
     } 
+0

bu düzeltildi! teşekkürler Aaron! Apache'nin HttpGet, HttpClient, HttpResponse ve HttpEntity nesnelerini kullanması nedeniyle düzeltmenin çalıştığını hayal ediyorum. Bunlar, HttpUrlConnection nesnesinin yerini aldı ve belli ki bazı şeyleri daha iyi ele alıyordu. Ben BufferedHttpEntity ile aşina değilim, ama muhtemelen bununla büyük bir ilgisi var. – reliks

+0

Teşekkürler Aaron ... benim için iyi çalışıyor – CoDe

+0

Thanx Aron. Benim için çalıştı –

0

BitmapFactory.decodeStream yalnızca görüntünün ham bayt akışını okur, URL hakkında ne de İçerik Kodlaması hakkında bilgisi yoktur, bu yüzden burada bir hata olduğunu düşünmüyorum. Görüntü formatını doğrudan görüntü başlığından okuyabilmelidir.

Muhtemelen URL yönlendirilir.

İlgili konular