0

我开发了一个 android 应用程序,它使用 'HttpURLConnection' 从 URL 获取位图。

该代码适用于一般 URL。不幸的是,我发现了一个无法解决的问题。

问题是当 URL 在文件共享的站点上时,它会检测到用户代理。如果用户代理显示设备是移动的,它将重定向到带有大量 HTML 标记的移动版本页面。所以,我无法获得位图。

我尝试以多种方式更改用户代理,但它根本不起作用。

仅供参考:使用相同的代码,可以获得一些具有通用 URL 的位图。但是当它在具有重定向代码的站点上时,它将不起作用。

有人有什么想法吗?

非常感谢。

这是我的代码:

String imgUrl = "http://upic.me/i/lj/0avatar.jpg";
Bitmap img = null;
try{
    URL url = new URL(imgUrl);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestProperty( "User-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" );
    connection.setInstanceFollowRedirects(false);
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    img = BitmapFactory.decodeStream(input);
}
catch (Exception e){
    e.printStackTrace();
}

当我通过 Android 中的 chrome 浏览器打开此 URL ( http://upic.me/i/lj/0avatar.jpg ) 时,它会重定向到另一个 URL ( http://upic.me/show/37096796 )。

4

1 回答 1

0

你可以试试这个

AndroidSmartImageView

SmartImageView 是 Android 标准 ImageView 的替代品,它还允许从 URL 或用户的联系人地址簿加载图像。图像缓存到内存和磁盘以实现超快速加载。

于 2013-08-22T00:11:19.553 回答