IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Encodage d'une URL


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Encodage d'une URL
    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

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Quel encodage votre proxy utlise pour les url? Et surtout quel est le but de l'opération? Normalement c'est au client, pas au serveur de gérer les proxy

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Je dois faire du SSO mais je n'ai pas la main sur l'application finale juste sur l'application intermédiaire.

    Mon application utilise UTF-8 et le proxy aussi quant à l'application finale je ne sais pas.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    CA m'a l'air un chouilla complexe pour juste du SSO tout ça

    Regardez dans un premier temps du coté de java.net.URLEncoder.encode(string, encodage) pour vois si ça vous convient.


    Ca s'utilise comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String url = "http://server:port/chemin/vers/application?parametre1="+URLEncoder.encode("coucou c'est moi :)","UTF-8")+
                "&parametre2="+URLEncoder.encode("Visitez moi çà: http://www.google.com","UTF-8");

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par GameMaster1337 Voir le message
    ... car je dois pas convertir les caractères comme "=" "/" "&" "?" ...
    Pourquoi ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé une solution acceptable.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URIUtil.encodeQuery(URIUtil.decode(URL), "UTF-8");
    Ce n'encode ni le http ni les caractères spéciaux du GET.

    je décode avant d'encoder car quand je naviguais j'encodais plusieurs fois la même requête cela donnait un truc du style : %20 puis %2520 ect...

    Merci à tous

    Merci tchize_ pour la recommandation

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    n'oubliez pas de préciser l'encodage quand vous utilisez ce genre de méthode, sinon vous risquez de sales surprises.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    bonjour à tous
    A chaque fois que j'encode l'URL avec cette méthode httpUtil.encodeURL(stringCurrentCompleteUrl,true) après une redirection toutes les caractères spéciaux(&,;:&:/) sont encodés deux fois.


    sauriez vous une solution

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage d'une url
    Par pacifiquement dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/02/2012, 12h04
  2. Encodage d'une URL
    Par picomz dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/11/2006, 20h03
  3. [Debutant]Formater un string pour une url
    Par maxxou dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/03/2004, 16h17
  4. [JSP] encoder et décoder les param d'une URL ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/12/2003, 11h34
  5. [web] tester la validiter d'une URL
    Par zebiloute dans le forum Web
    Réponses: 4
    Dernier message: 25/11/2002, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo