Question

Donc j'ai un peu de code Java qui utilise Jakarta HttpClient comme ceci:

URI aURI = new URI( "http://host/index.php?title=" + title + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery());

Le problème est que si title comprend tous les esperluettes (&), ils sont considérés comme paramètre de séparateurs et de la demande va tordu...et si je les remplacer par l'URL échappé équivalent %26, puis cela devient double échappement par getEscapedPathQuery() dans %2526.

Je suis actuellement en train de travailler autour de ce par gros de réparer les dégâts par la suite:

URI aURI = new URI( "http://host/index.php?title=" + title.replace("&", "%26") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery().replace("%2526", "%26"));

Mais il n'y a pour être plus agréable de faire ça, hein?Notez que le titre peut contenir n'importe quel nombre d'aléas et de l'UTF-8 caractères, etc, de sorte s'échapper tout le reste est une exigence.

Était-ce utile?

La solution

Voici:

import java.net.URLEncoder;
...
...
URI aURI = new URI( "http://host/index.php?title=" + URLEncoder.encode(title,"UTF-8") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getPathQuery());

Vérifier java.net.urlencoder pour plus d'informations.

Autres conseils

Pourquoi appelez-vous getEscapedPathQuery () si vous ne voulez pas échapper? Décidez simplement qui est la responsabilité et soyez cohérent.

L'utilisation de la URLEncoder classe.

Classe utilitaire pour formulaire HTML de codage.Cette classe contient statique les méthodes de conversion d'une Chaîne à l' application/x-www-form-urlencoded format MIME.Pour plus d'informations à propos de HTML codage du formulaire, consultez la spécification HTML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top