2015-12-16 71 views
0

我想獲取具有靜態鏈接並在ImageView下設置它的圖像。但http給我例外的文件未找到。同樣的圖像,我可以很容易地在我的瀏覽器中打開,並且如果我嘗試訪問的圖像在url鏈接中沒有靜態,那麼相同的代碼效果很好。有人可以請幫助如何獲得靜態圖像網址下載\獲取?我不確定這個問題是否是因爲靜態或不是。訪問與靜態鏈接圖像鏈接給出FileNotFoundException - android

new DownloadImageTask(mImageView) 
       .execute("http://static.die.net/earth/mercator/1600.jpg"); 



private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
ImageView bmImage; 

public DownloadImageTask(ImageView bmImage) { 
    this.bmImage = bmImage; 
} 

protected Bitmap doInBackground(String... urls) { 
    String urldisplay = urls[0]; 
    Bitmap mIcon11 = null; 
    try { 
     InputStream in = new java.net.URL(urldisplay).openStream(); 
     mIcon11 = BitmapFactory.decodeStream(in); 
    } catch (Exception e) { 
     Log.e("Error", e.getMessage()); 
     e.printStackTrace(); 
    } 
    return mIcon11; 
} 

protected void onPostExecute(Bitmap result) { 
    bmImage.setImageBitmap(result); 
} 
} 

回答

2

它與useragent有關。它適用於另一個用戶代理。 試試這個。

protected Bitmap doInBackground(String... urls) { 
    String ua = "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"; 
    String urldisplay = urls[0]; 
    Bitmap mIcon11 = null; 
    try { 
     System.setProperty("http.agent", ua); 
     InputStream in = new java.net.URL(urldisplay).openStream(); 
     mIcon11 = BitmapFactory.decodeStream(in); 
    } catch (Exception e) { 
     Log.e("Error", e.getMessage()); 
     e.printStackTrace(); 
    } 
    return mIcon11; 
} 

讓我知道你的結果。

+0

奇怪的解決方案,但工程。謝謝:) – user531069

+0

不錯..也許它是一種保護這個網站..有很多人試圖得到這個圖像..檢查出來在谷歌搜索.. – febaisi

0

別擔心,它與android無關。我加載this使用相同的代碼:)

可能他們關閉了子域static.die.net,die.net仍在工作。

+0

static.die.net正在工作:請檢查 - http://static.die.net/earth/mercator/1600.jpg。這只是當我試圖在Android中加載它失敗,文件沒有發現異常。這些圖像是否有任何直接die.net鏈接? – user531069

+0

我只是說圖像是問題。 wget 在終端中也表示404 Not Found。所以,它沒有特定於android。更新:嗯,對不起,我的壞 - 它的用戶代理的事情。 –