Bonjour,
Je cherche à encoder une url correctement après être passer par un proxy.
Ma servlet s'authentifie et navigue sur le site.
Cette solution est exactement celle décrit ici :
[URL="http://edwardstx.net/wiki/Wiki.jsp?page=HttpProxyServlet"]
Voici le code utilisé pour obtenir l'adresse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private String getProxyURL(HttpServletRequest httpServletRequest) { // Set the protocol to HTTP String stringProxyURL = "http://" + this.getProxyHostAndPort(); // Check if we are proxying to a path other that the document root if(!this.getProxyPath().equalsIgnoreCase("")){ stringProxyURL += this.getProxyPath(); } // Handle the path given to the servlet stringProxyURL += httpServletRequest.getPathInfo(); // Handle the query string if(httpServletRequest.getQueryString() != null) { stringProxyURL += "?" + httpServletRequest.getQueryString(); } return stringProxyURL; }
Le seul moyen que j'ai trouvé pour obtenir une adresse correcte dans la plupart des cas est le replace(" ", "%20") ce qui n'est pas très propre et cela risque de poser des problèmes plus tard.
J'ai essayer de convertir httpServletRequest.getPathInfo() et (httpServletRequest.getQueryString() avec URLEncoder.encode ... et d'utiliser une URI uri = new URI(.....) sans succès car je dois pas convertir les caractères comme "=" "/" "&" "?" ...
je pense à parser l'url caractère par caractère et d'appliquer encode si besoin est.
Mais cette solution me parais débile. Y-a-t-il une solution plus simple ?
Merci d'avance
Partager