Construire des URL incorrectes en java avec java.net. URL?


Utilisation d'oracle java 1.8.0_25

J'ai la construction suivante

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123"), "asd")

Selon la documentation dans https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html
il devrait produire l'URL de http://localhost:4567/123/asd
Mais il produit http://localhost:4567/asd

La documentation indique

Cet extrait de code utilise le constructeur URL qui vous permet de créer un objet URL à partir d'un autre objet URL (la base) et d'une spécification d'URL relative. Le la forme générale de ce constructeur est:

URL(URL baseURL, String relativeURL)
Le premier argument est un objet URL qui spécifie la base de la nouvelle URL. Le deuxième argument est une chaîne qui spécifie le reste du nom de la ressource par rapport à la base. Si baseURL est null, alors ce constructeur traite relativeURL comme une spécification d'URL absolue. Inversement, si relativeURL est une spécification d'URL absolue, le constructeur ignore baseURL.

Est-ce le comportement correct ici?

Author: Community, 2015-10-26

1 answers

Après avoir lu la documentation en utilisant ce constructeur:

URL(URL baseURL, String relativeURL)

Vous pouvez donc faire quelque chose comme ceci:

URL baseUrl = new URL("http://localhost:4567/");
URL url = new URL(baseUrl, "123/asd")

Ou vous pouvez le faire comme un one-liner:

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123/"), "asd");

Sortie

Http://localhost:4567/123/asd

 5
Author: dguay, 2015-10-26 15:51:35