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

C# Discussion :

[C# 3.5] WebRequest avec htpassword


Sujet :

C#

  1. #1
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut [C# 3.5] WebRequest avec htpassword
    Bonjour,

    je me connecte via WebRequest et WebResponse à une page web qui me renvoie du XML.
    J'ai mis un htaccess et htpassword à l'intérieur du répertoire, et cette protection fonctionne très bien par le navigateur...

    Malgré cela, impossible de dire à ma WebRequest de m'y connecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     NetworkCredential cred = new NetworkCredential(userHtaccess, passwordHtaccess);
    webRequest.Credentials = cred;
    j'utilise la méthode post, avec le limit qui va bien dans le htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <limit GET POST>
      require valid-user
    </limit>
    Mais impossible de le faire fonctionner. On dirait que le NetworkCredential ne passe pas la protection.
    J'ai même essayé d'envoyer le mot de passe en crypté puis en décrypté, puis de changer le password en crypté puis décrypté, mais rien n'y fait...

    Si quelqu'un a une idée je suis preneur...

    Merci d'avance pour vos réponses,

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par stailer Voir le message
    Malgré cela, impossible de dire à ma WebRequest de m'y connecter
    ...
    Mais impossible de le faire fonctionner
    Mais encore ? quel est le problème exactement ? authentification refusée, pas de réponse, exception ... ?

    Je viens de tester avec un code identique, ça fonctionne bien... peut-être un problème dans ta conf Apache ?

  3. #3
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut
    Voici mon code htaccess:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AuthUserFile D:/wamp/www/appli/php_bridge/.htpasswd
    AuthName "Restricted Access"
    AuthType Basic
    <limit GET POST>
      require valid-user
    </Limit>
     
    dans le htpasswd : test:k2qOb5EyOA/16
    Je n'ai pas d'erreur "non autorisé" sauf si j'envoie un mot de passe et utilisateur vide...

    Voici ma méthode :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public static string HttpPost(string uri, string parameters, string userHtaccess, string passwordHtaccess)
            {
                // parameters: name1=value1&name2=value2	
                WebRequest webRequest = WebRequest.Create(uri);
     
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.Method = "POST";
     
                if (userHtaccess != "" && passwordHtaccess != "")
                {
                   // MessageBox.Show(clsWebHelper.EncodePassword(passwordHtaccess));
                    NetworkCredential cred = new NetworkCredential(userHtaccess, passwordHtaccess);
                    webRequest.Credentials = cred;
                }
     
                byte[] bytes = Encoding.UTF8.GetBytes(parameters);
     
                Stream os = null;
                try
                { // send the Post
                    webRequest.ContentLength = bytes.Length;   //Count bytes to send
                    os = webRequest.GetRequestStream();
                    os.Write(bytes, 0, bytes.Length);         //Send it
                }
                catch (WebException ex)
                {
                    MessageBox.Show(ex.Message, "HttpPost: Request error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    if (os != null)
                    {
                        os.Close();
                    }
                }
     
                string result = "";
                try
                { // get the response
                    WebResponse webResponse = webRequest.GetResponse();
                    if (webResponse == null)
                    { return null; }
                    StreamReader sr = new StreamReader(webResponse.GetResponseStream());
     
                    result = sr.ReadToEnd().Trim();
                    return result;
                }
                catch (WebException ex)
                {
                    MessageBox.Show(ex.Message, "HttpPost: Response error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                return null;
            }

  4. #4
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut
    Après quelques tests et rajout de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    webRequest.PreAuthenticate = true;
    Ca fonctionne... 1 coup sur 2 et encore sur mon serveur local.

    Pourrais tu m'envoyer ton code en exemple ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/03/2013, 17h00
  2. Réponses: 2
    Dernier message: 10/03/2009, 19h09
  3. [C#]problème avec WebRequest
    Par Matth_S dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/11/2006, 09h48
  4. [C#] Se connecter à Hotmail avec WebRequest
    Par sorcer1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/10/2006, 17h15
  5. Réponses: 2
    Dernier message: 25/04/2006, 12h09

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