Tag: rfc3986

当相对URI包含空路径时,Java的URI.resolve是否与RFC 3986不兼容?

我相信Java的URI.resolve方法的定义和实现与RFC 3986第5.2.2节不兼容。 我知道Java API定义了该方法的工作方式,如果它现在被更改,它会破坏现有应用程序,但我的问题是: 任何人都可以确认我的理解这个方法与RFC 3986不兼容吗? 我正在使用这个问题中的示例: java.net.URI仅针对查询字符串进行解析 ,我将在此处复制: 我正在尝试使用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); 理论(或我认为)是决心应该回归: http://example.com/something/more/long?query=http://local:282/rand&action=aaaa 但我得到的是: http://example.com/something/more/?query=http://local:282/rand&action=aaaa 我对RFC 3986第5.2.2节的理解是,如果相对URI的路径为空,那么将使用基URI的整个路径: if (R.path == “”) then T.path = Base.path; if defined(R.query) then T.query = R.query; […]