2012-10-04 4 views
22

C'est une question très simple. Mais je suis incapable de trouver une réponse dans la documentation de Java et incapable de la tester aussi bien puisque je ne sais pas si une telle méthode existe ou non.Créer une URL à partir d'une chaîne

Je pourrais recevoir une chaîne d'URL qui pourrait être

http://www.example1.com

ou

http://www.example1.com/

puis je vais obtenir le chemin des ressources qui pourrait commencer par /api/v1/status.xml ou ce serait comme api/v1/status.xml

Je regardais le URL classe et je peux gérer la première partie, c'est-à-dire aller chercher le hostURL pour en faire une requête HTTPS ou HTTP. Le problème consiste à ajouter le chemin de la ressource. soit je dois le vérifier manuellement si la première lettre est / ou non. Je me demandais si cette fonctionnalité est déjà dans une classe ou non.

+0

Est-ce similaire à Qu'est-ce que vous cherchez? Cela peut être utile: https://stackoverflow.com/questions/1861620/is-there-a-java-package-to-handle-building-urls – MikeB

Répondre

35
URL url = new URL(yourUrl, "/api/v1/status.xml"); 

Selon les javadocs ce constructeur doit ajouter que quelle que soit la ressource à la fin de votre domaine, de sorte que vous voulez créer 2 urls:

URL domain = new URL("http://example.com"); 
URL url = new URL(domain + "/files/resource.xml"); 

Sources: http://docs.oracle.com/javase/6/docs/api/java/net/URL.html

+1

Que faire si 'URL url = nouvelle URL (domaine +" fichiers/ressource .xml ");'? MalformedURL? ... que se passe-t-il si 'domain = www.example.com /' et 'new URL (domain +" /files/resources.xml ");' ... nouveau malformé –

+0

J'ai vu plusieurs fois où une application vérifie d'abord la chaîne d'URL pour 'if (domain.endsWith ("/")) {domain = domaine.substring (0, domain.length() - 1);}' Pour tous les autres problèmes, attraper MalformedURLException et gérer à partir de là. –

+0

Je reçois MalformedURLException juste parce que le protocole n'est pas "http". OMG/facepalm –

Questions connexes