whl*_*hlk 61 java url android uri httprequest
我有一个字符串表示包含空格的URL,并希望将其转换为URI对象.如果是简单的尝试
String myString = "http://myhost.com/media/File Name that has spaces inside.mp3";
URI myUri = new URI(myString);
Run Code Online (Sandbox Code Playgroud)
它给了我
java.net.URISyntaxException: Illegal character in path at index X
Run Code Online (Sandbox Code Playgroud)
其中index X是URL字符串中第一个空格的位置.
如何可以解析myString到一个URI对象?
Bal*_*usC 121
实际上,您应该对 "无效"字符进行URI编码.由于字符串实际上包含完整的URL,因此很难对其进行正确的URI编码.你不知道/应该考虑哪些斜线,哪些不应该考虑.你不能String事先预测原始的.问题确实需要在更高层次上解决.它String来自哪里?它是硬编码的吗?然后相应地自己更改.它是否以用户输入的形式出现?验证它并显示错误,让用户解决自己.
无论如何,如果你能确保它只是 URL中的空格使它无效,那么你也可以用以下字符串逐个替换%20:
URI uri = new URI(string.replace(" ", "%20"));
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以确保它只是最后一个斜杠之后需要进行URI编码的部分,那么您也可以在android.net.Uri实用程序类的帮助下执行此操作:
int pos = string.lastIndexOf('/') + 1;
URI uri = new URI(string.substring(0, pos) + Uri.encode(string.substring(pos)));
Run Code Online (Sandbox Code Playgroud)
请注意,URLEncoder该任务不可用,因为它旨在根据application/x-www-form-urlencoded规则(在HTML表单中使用)对查询字符串参数名称/值进行编码.另请参阅查询字符串参数的Java URL编码.
Boz*_*zho 19
java.net.URLEncoder.encode(finalPartOfString, "utf-8");
Run Code Online (Sandbox Code Playgroud)
这将对字符串进行URL编码.
finalPartOfString 是最后一次斜线之后的部分 - 就你的情况而言,就是这首歌的名字.
| 归档时间: |
|
| 查看次数: |
105157 次 |
| 最近记录: |