图片的URL编码错误

时间:2012-11-10 17:03:58

标签: java android url-encoding

在我的应用中,有一个ImageView显示来自网址的图片。

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

        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;

这仅适用于包含数字或英文字母且不能与任何其他字符(如空格)一起使用的网址:

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

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

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

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

谢谢:)

1 个答案:

答案 0 :(得分:4)

" Url encoding in Android"

  

您不会对整个网址进行编码,只会对其中的部分网址进行编码   "不可靠的来源"。 -yanchenko

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

如果您只处理URL的特定部分,那么这很好   你知道如何构建或重建URL。对于更一般的   可以处理任何url字符串的方法,请参阅下面的答案。 - 克雷格   乙

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();