使用静态URL链接访问图像会产生FileNotFoundException - android

时间:2015-12-16 20:35:48

标签: android http url

我正在尝试获取具有静态链接的图像并将其设置在ImageView下。但http给我提供了File Not Found的例外。相同的图像我可以在浏览器中轻松打开,如果我尝试访问的图像在url链接中没有静态,则相同的代码也能正常工作。有人可以帮助如何获取静态图像网址下载\获取?我不确定问题是否是因为静电或不是。

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 个答案:

答案 0 :(得分: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;
}

让我知道你的结果。

答案 1 :(得分:0)

不用担心,它与android无关。我使用相同的代码加载this:)

可能他们关闭了子域static.die.net,die.net仍在工作。