locked
WebBrowser transforme (décode) ma variable uri RRS feed

  • Question


  • Bonjour, j'utilise le navigateur Web (WebBrowser1).

    Mon problème vient de l'encodage d'URL.

    Je souhaite définir l'url2 (uriRedirect) dans un paramètre passé dans l'url1

    url1 = "/index.php?login=myLogin&pass=myPass&uriRedirect=" + "/?goto=./myRedirectFileAfterLogin.php&param1=a&param2=b"

    Le but étant de lancer le WebBrowser sur l'url1 qui authentifie l'utilisateur et le redirige sur la page 2 : "/myRedirectFileAfterLogin.php&param1=a&param2=b"

    L'encodage se fait bien via la classes http://iron9light.wordpress.com/2008...r-sliverlight/

    L'uri est correctement encodée :
    Citation:
    URI(a):/?goto=./myRedirectFileAfterLogin.php&param1=a&param2=b
    URI(b):%2f%3fgoto%3d..%2fmyRedirectFileAfterLogin.php%26param1%3da%26param2%3db
    Mais l'appel du WebBrowser, convertit seul, automatiquement et indésirablement mon paramètre uriRedirect. Il le décode avant de l'envoyer !!!

    Au lieu de nous rediriger vers :
    Citation:
    http://www.test.com/index.php?login=myLogin&pass=myPass&uriRedirect=%2f%3fgoto%3d..%2fmyRedirectFileAfterLogin.php%26param1%3da%26param2%3db
    Il redirige sur :
    Citation:
    http://www.test.com/index.php?login=myLogin&pass=myPass&uriRedirect=/?goto=./myRedirectFileAfterLogin.php&param1=a&param2=b
    Une idée afin qu'il ne décode pas ce paramètre lors de l'appel de la page via le WebBrowser ?

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplWebBrowser
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                String address = "http://" + "www.test.com" + "/";
     
                String uri = "/?goto=./myRedirectFileAfterLogin.php&param1=a&param2=b";
     
                Console.WriteLine("URI(a):" + uri);
                String uriEncode = System.Web.HttpUtility.UrlEncode(uri);
                Console.WriteLine("URI(b):" + uriEncode);
     
                Console.WriteLine("address:" + address);
     
                Uri baseUri = new Uri(address);
                Uri uriFinale = new Uri(baseUri, "/index.php?login=myLogin&pass=myPass&uriRedirect=" + uriEncode);
     
                Console.WriteLine("uriFinale:" + uriFinale);
     
                webBrowser1.Navigate(uriFinale);
     
            }
        }
    }
    lundi 11 janvier 2010 18:06

Réponses

  • Bonsoir,

    J'ai regardé partout, j'ai fait pas mal de tests, et vu que le parametre DontEscape est obsolete et que la propriété UserEscaped est read-only, je ne vois pas comment tu pourrais faire avec cette méthode.
    Si tu trouves, je suis intéressé.

    Néanmoins, je peux me tromper, mais si je peux me permettre, tu prends le probleme par le mauvais bout.
    La redirection, je dirais que c'est plus une histoire du site Web que de ton browser.
    Il faudrait passer un truc du style : uriRedirect=myRedirectFileAfterLogin.php&redirectparam1=a&redirectparam2=b et reconstruire l'url de redirection a partir de ta page PHP.

    En espérant que cela te sera utile,

    Cordialement,

    Tom
    Thomas Aimonetti - C# - Sharplog Engineering
    http://www.sharplog.fr
    mardi 12 janvier 2010 00:32
  • Merci de ta réponse, j'ai effectivement essayer avec le constructeur obsolète DontEscape à true, mais le résultat est identique.

    Et puisque qu'en Java, PHP j'ai réussi a stocker une URL encodée, mais pas en C#, je vais m'orienter sur la reconstruction de l'URL côté serveur comme tu le préconises. Je ne vois que cela comme alternative.


    • Marqué comme réponse Alex Petrescu mercredi 20 janvier 2010 08:05
    mardi 12 janvier 2010 08:16

Toutes les réponses

  • Bonsoir,

    J'ai regardé partout, j'ai fait pas mal de tests, et vu que le parametre DontEscape est obsolete et que la propriété UserEscaped est read-only, je ne vois pas comment tu pourrais faire avec cette méthode.
    Si tu trouves, je suis intéressé.

    Néanmoins, je peux me tromper, mais si je peux me permettre, tu prends le probleme par le mauvais bout.
    La redirection, je dirais que c'est plus une histoire du site Web que de ton browser.
    Il faudrait passer un truc du style : uriRedirect=myRedirectFileAfterLogin.php&redirectparam1=a&redirectparam2=b et reconstruire l'url de redirection a partir de ta page PHP.

    En espérant que cela te sera utile,

    Cordialement,

    Tom
    Thomas Aimonetti - C# - Sharplog Engineering
    http://www.sharplog.fr
    mardi 12 janvier 2010 00:32
  • Merci de ta réponse, j'ai effectivement essayer avec le constructeur obsolète DontEscape à true, mais le résultat est identique.

    Et puisque qu'en Java, PHP j'ai réussi a stocker une URL encodée, mais pas en C#, je vais m'orienter sur la reconstruction de l'URL côté serveur comme tu le préconises. Je ne vois que cela comme alternative.


    • Marqué comme réponse Alex Petrescu mercredi 20 janvier 2010 08:05
    mardi 12 janvier 2010 08:16