Je veux envoyer un URI comme la valeur d'une requête/matrice paramètre. Avant que je puisse l'ajouter à une URI, j'ai besoin de coder selon la RFC 2396. Par exemple, compte tenu de l'entrée:
http://google.com/resource?key=value1 & value2
Je m'attends à la sortie:
http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2
Ni java.net.URLEncoder
ni java.net.URI
va générer la sortie droite. URLEncoder
est destinée au formulaire HTML de codage qui n'est pas la même que la RFC 2396. URI
n'a pas de mécanisme pour le codage d'une valeur unique à un moment donc il n'a aucun moyen de savoir que valeur1 et valeur2 sont partie de la même clé.