当前位置: 首页 > 面试题库 >

Android:如何解析带有URL字符串的URI对象?

漆雕绍晖
2023-03-14
问题内容

我有一个表示包含空格的URL的字符串,并希望将其转换为URI对象。如果我只是尝试通过创建它

String myString = "http://myhost.com/media/File Name that has spaces inside.mp3";
URI myUri = new URI(myString);

它给了我

java.net.URISyntaxException: Illegal character in path at index X

其中index X是URL字符串中第一个空格的位置。

如何解析myStringURI对象?


问题答案:

实际上,您应该使用URI编码
“无效”字符。由于该字符串实际上包含完整的URL,因此很难对其进行URI编码。您不知道/应该考虑哪些斜杠,哪些不是。您无法String事先预测到这一点。确实需要在更高层次上解决该问题。那String是哪里来的
它是硬编码的吗?然后只需相应地自己更改即可。它作为用户输入进来吗?验证并显示错误,让用户自己解决。

无论如何,如果可以确保 是URL中的空格使其无效,那么您也可以仅使用逐个字符串替换%20

URI uri = new URI(string.replace(" ", "%20"));

或者,如果可以确保 _仅_是最后一个斜杠之后的部分需要进行URI编码,那么也可以在android.net.Uri实用工具类的帮助下进行操作:

int pos = string.lastIndexOf('/') + 1;
URI uri = new URI(string.substring(0, pos) + Uri.encode(string.substring(pos)));

请注意,这URLEncoder不适用于该任务,因为它旨在按照application/x-www-form-urlencoded规则对查询字符串参数名称/值进行编码(用于HTML表单)。



 类似资料:
  • 问题内容: 我想从android中的字符串解析网址。示例字符串为 我想在不使用subString方法的情况下从String 解析URL 。 问题答案: 更新: 您可以使用正则表达式和正则表达式来查找文本中的所有url。 原版的: 您可以使用功能。

  • 问题内容: 我正在尝试解析以下JSONString 这是我的代码: 有人可以帮忙,我的代码不起作用吗?我想解析标题,公司名称,类别等… 问题答案: 您需要从您的jsonstring 创建。 你有里面然后..

  • 问题内容: 我试图从json字符串解析json数组,但它总是抛出异常。 如果我有任何错误,请告诉我。 谢谢。 这是我从服务器获取Json的代码: 这是解析JsonArray的代码: 这是我的json字符串: 问题答案: 嗨,@ Caerulius,Harish,ρяσsρєяK,Hot Licks等等。 最终,经过2天的头痛和2个不眠之夜,我解决了这个问题。而且由于您花了宝贵的时间与我讨论,因此我

  • 问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号:

  • 问题内容: 我正在从服务器获取JSON字符串,并且已经通过代码获取了JSON字符串。但是我不知道如何解析它。 以下是我的JSON字符串 请提供任何指导或代码段。 问题答案: 使用JSON类进行解析,例如