我正在尝试使用JDK java.net.URI构建URI 。
我想附加一个绝对URI对象,一个查询(在String中)。例如:
URI base = new URI("http://example.com/something/more/long");
String queryString = "query=http://local:282/rand&action=aaaa";
URI query = new URI(null, null, null, queryString, null);
URI result = base.resolve(query);
Run Code Online (Sandbox Code Playgroud)
理论(或我的想法)是决心应该返回:
http://example.com/something/more/long?query=http://local:282/rand&action=aaaa
Run Code Online (Sandbox Code Playgroud)
但是我得到的是:
http://example.com/something/more/?query=http://local:282/rand&action=aaaa
Run Code Online (Sandbox Code Playgroud)
为什么#resolve() “吃掉”最后一条路?如果新的URI(query)构建为:
URI query = new URI(null, null, base.getPath(), queryString, null);
Run Code Online (Sandbox Code Playgroud)
它运作良好。
我想亲自回应一下。Javadoc确实解释得正确。正如URI#resolve()在第 3.b 节中所述:
否则,给定 URI 的路径是相对的,因此新 URI 的路径是通过根据给定 URI 的路径解析给定 URI 的路径来计算的。这是通过将此 URI 路径的最后一段(如果有)与给定 URI 的路径连接起来,然后对结果进行标准化(就像调用标准化方法一样)来完成的。
所以....我没有读正确。我应该删除这个回复吗?还是让它自己回复?
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |