我开发了一个 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 )。