为什么将字符串传递给 URI 会抛出异常?
Why passing a string to URI throws exception?
我有这样的代码:
String previousUrl = "http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj";
URL url = new URL(previousUrl);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), url.getRef());
现在这段代码可以完美运行了。我得到了所需的 URI。
但是如果我将 previousUrl 传递给 URI 构造函数,它就会抛出异常。我想知道原因。
String previousUrl = "http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj";
URI uri = new URI(previousUrl);
谢谢。
原因已经告诉你了! url:
中有无效字符
java.net.URISyntaxException: Illegal character in query at index 41: http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj
所以字符|
无法处理!因此,在将信息传递给 URI 构造函数之前,您必须创建一个 URL(就像您已经成功完成的那样)
您也可以尝试用 %
等价物替换所有无法处理的字符:
new URI(previousUrl.replaceAll(" ", "%20").replaceAll("\|", "%7C"));
但每次遇到无法处理的新角色时,您都必须添加更多此类替换!
我有这样的代码:
String previousUrl = "http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj";
URL url = new URL(previousUrl);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), url.getRef());
现在这段代码可以完美运行了。我得到了所需的 URI。
但是如果我将 previousUrl 传递给 URI 构造函数,它就会抛出异常。我想知道原因。
String previousUrl = "http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj";
URI uri = new URI(previousUrl);
谢谢。
原因已经告诉你了! url:
中有无效字符java.net.URISyntaxException: Illegal character in query at index 41: http://localhost:8080/abc.html?xyz=hbkbkj|kjbjkbkj kjbkj
所以字符|
无法处理!因此,在将信息传递给 URI 构造函数之前,您必须创建一个 URL(就像您已经成功完成的那样)
您也可以尝试用 %
等价物替换所有无法处理的字符:
new URI(previousUrl.replaceAll(" ", "%20").replaceAll("\|", "%7C"));
但每次遇到无法处理的新角色时,您都必须添加更多此类替换!