「HttpURLConnection」を使用してURLからビットマップを取得するAndroidアプリを開発しました。
このコードは、一般的な URL で正常に機能します。残念ながら、解決できない問題が 1 つ見つかりました。
問題は、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();
}
この URL ( http://upic.me/i/lj/0avatar.jpg ) を Android の chrome ブラウザーで開くと、別の URL ( http://upic.me/show/37096796 ) にリダイレクトされます。