Suena como es probable que desee utilizar el URL en lugar de URI (que es más general y tiene que lidiar con una sintaxis menos estrictas.)
URI a = new URI("http://www.foo.com");
URI b = new URI("bar.html");
URI c = a.resolve(b);
c.toString() -> "http://www.foo.combar.html"
c.getAuthority() -> "www.foo.com"
c.getPath() -> "bar.html"
toString de URI() no se comporta como se podría esperar , pero dada su naturaleza general, es posible que deba ser perdonado.
Lamentablemente, el método toURL() de URI no se comporta del todo como yo esperaba para darle lo que desea.
URL u = c.toURL();
u.toString() -> "http://www.foo.combar.html"
u.getAuthority() -> "www.foo.combar.html" --- Oh dear :(
Así que es mejor sólo para empezar directamente con una URL para obtener lo que desea:
URL x = new URL("http://www.foo.com");
URL y = new URL(x, "bar.html");
y.toString() -> "http://www.foo.com/bar.html"
¿Cuál fue el resultado que esperabas? –
"http://www.foo.com/bar.html" hubiera estado bien. – Cpa
¿Por qué usa dos URI? Debe haber una razón, pero no está claro. –