J'ai le code ci-dessous qui code une URL avant qu'il ne soit envoyer sur le fil (e-mail):Encode Chaîne URL en Java
private static String urlFor(HttpServletRequest request, String code, String email, boolean forgot) {
try {
URI url = forgot
? new URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), createHtmlLink(),
"code="+code+"&email="+email+"&forgot=true", null)
: new URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), createHtmlLink(),
"code="+code+"&email="+email, null);
String s = url.toString();
return s;
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
/**
* Create the part of the URL taking into consideration if
* its running on dev mode or production
*
* @return
*/
public static String createHtmlLink(){
if (GAEUtils.isGaeProd()){
return "/index.html#ConfirmRegisterPage;";
} else {
return "/index.html?gwt.codesvr=127.0.0.1:9997#ConfirmRegisterPage;";
}
}
Le problème est que l'e-mail généré ressemble à ceci:
http://127.0.0.1:8888/index.html%3Fgwt.codesvr=127.0.0.1:9997%23ConfirmRegisterPage;?code=fdc12e195d&[email protected]
la marque ?
et #
symbole est remplacé par %3F
et %23
où lorsque le lien est ouvert à partir du navigateur, il ne sera pas ouvert comme il est incorrect.
Quelle est la bonne façon de faire cela?
Encode seulement les paramètres de la requête, pas le chemin segemts. –