次の URL で画像をダウンロードしようとしています。
http://upload.tapcrowd.com//cache/ /_cp_100_100_stand_filière_300x212.jpg
ブラウザでわかるように、これは画像を示していますが、私のアプリでは FileNotFoundException が発生します。
ただし、画像のURLを「è」から「e」に変更すると。アプリに正常にダウンロードできます。ただし、Unicode 記号で画像をダウンロードできるようにする必要があるため、これは一時的な解決策にすぎません。
どうすればこれを達成できますか?
画像のダウンロードに使用される方法:
Bitmap bitmap = null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is = conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f, maxheight, maxwidth);
私のために働く結果コード:
Bitmap bitmap = null;
int slashIndex = url.lastIndexOf('/');
String filename = url.substring(slashIndex + 1);
filename = URLEncoder.encode(filename, "UTF-8");
url = url.subSequence(0, slashIndex + 1) + filename;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is = conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f, maxheight, maxwidth);