Mon application Java autonome reçoit une URL (qui pointe vers un fichier) de l'utilisateur et j'ai besoin de l'atteindre et de la télécharger. Le problème auquel je suis confronté est que je ne parviens pas à encoder correctement l'adresse de l'URL HTTP...
Exemple:
URL: http://search.barnesandnoble.com/booksearch/first book.pdf
java.net.URLEncoder.encode(url.toString(), "ISO-8859-1");
me renvoie:
http%3A%2F%2Fsearch.barnesandnoble.com%2Fbooksearch%2Ffirst+book.pdf
Mais, ce que je veux est
http://search.barnesandnoble.com/booksearch/first%20book.pdf
(espace remplacé par %20)
Je suppose que URLEncoder
n'est pas conçu pour encoder les URL HTTP... La JavaDoc dit "Classe utilitaire pour l'encodage des formulaires HTML"... Y a-t-il un autre moyen de le faire?
0 votes
Pinaillage : une chaîne contenant un caractère d'espace par définition n'est pas un URI. Donc ce que vous recherchez est un code qui implémente l'échappement URI défini dans la section 2.1 du RFC 3986.
2 votes
Voir aussi stackoverflow.com/questions/10786042/…
0 votes
Le comportement est tout à fait correct. L'encodage d'URL consiste à transformer quelque chose en une chaîne qui peut être transmise en toute sécurité en tant que paramètre d'URL, et n'est absolument pas interprété en tant qu'URL. Alors que vous voulez simplement convertir une petite partie de l'URL.