5

次の 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);
4

1 に答える 1

3

URLEncoderを使用して URL をエンコードします。

String baseUrl = "http://upload.tapcrowd.com//cache//";
String imageName = "_cp_100_100_stand_filière_300x212.jpg";
URL imageUrl = new URL(baseUrl+URLEncoder.encode(imageName ,"UTF-8"));

URLバーにアクセントを入力すると、ブラウザはエンコードを行うのに十分なほどスマートであるため、ブラウザで動作します。

于 2013-02-01T13:49:42.710 に答える