我有一个链接,其中有一个空格,但是当我将其粘贴到浏览器时,它加载页面并且链接略有变化,以下是链接:
http://www.marketimyilmazlar.com/image/cache/data/DUZELTME/dvm/screenshot 7-500x500.jpg
Run Code Online (Sandbox Code Playgroud)
但是当浏览器加载页面时,它会返回以下内容:
http://www.marketimyilmazlar.com/image/cache/data/DUZELTME/dvm/screenshot%207-500x500.jpg
Run Code Online (Sandbox Code Playgroud)
这是我在java中所做的:
public static Drawable LoadImageFromWeb(String link) throws URISyntaxException {
try {
URI uri = new URI(link);
URL url = new URL(uri.toASCIIString());
InputStream is = (InputStream) url.getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (IOException e) {
Log.e("HATA", "THERE is an error", e);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是,我得到以下异常:
java.net.URISyntaxException: Illegal character in path at index 73:
Run Code Online (Sandbox Code Playgroud)
那么,有人可以帮我解决这个问题吗?谢谢
该类java.net.URI可能可以在这里为您提供帮助 - 它的单参数构造函数期望参数是一个正确的 URI,并且转义了非法字符,但它的多参数构造函数可以处理未转义的部分。#如果您的初始 URL 不包含任何 %-转义符,并且末尾没有片段,那么您可以这样做
String escaped = new URI("dummy", unescaped, null).getRawSchemeSpecificPart();
Run Code Online (Sandbox Code Playgroud)
这里的技巧是,三参数构造函数需要一个“方案”、一个“方案特定部分”和一个“片段”,全部采用非转义形式。所以对于你在问题中的例子
new URI("dummy", unescaped, null)
Run Code Online (Sandbox Code Playgroud)
将为您提供正确转义的 URI
String escaped = new URI("dummy", unescaped, null).getRawSchemeSpecificPart();
Run Code Online (Sandbox Code Playgroud)
从该 URI 中提取原始 SSP 将为您提供第一个冒号之后的所有内容,即
new URI("dummy", unescaped, null)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |