1

在我的应用程序中,有一个 ImageView 显示来自 URL 的图像。

我使用这种方法下载图像:

        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);
        return bitmap;

这仅适用于具有数字或英文字母的 URL,不适用于任何其他字符(如空格):

好网址: http ://site.com/images/image.png

错误网址: http : //site.com/images/image 1.png

我试图改变 URL 编码(URLEncoder.encode),但它改变了整个 URL(包括斜杠等......)。

编码后是否需要替换一些字符?或者也许有更好的方法?

谢谢 :)

4

1 回答 1

4

Android 中的 URL 编码

您不对整个 URL 进行编码,仅对来自“不可靠来源”的部分进行编码。-扬琴科

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;

如果您只是处理 URL 的特定部分并且知道如何构造或重构 URL,这很好。有关可以处理任何 url 字符串的更通用的方法,请参阅下面的答案。– 克雷格 B

String urlStr = "http://abc.dev.domain.com/0007AC/ads/800x480 15sec h.264.mp4";
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
于 2012-11-10T17:17:08.950 回答