27 votes

Comment se connecter à un site avec WebClient ?

Je veux télécharger quelque chose en utilisant un objet WebClient en C#, mais le domaine de téléchargement exige que je sois connecté. Comment puis-je me connecter et conserver les données de session à l'aide de WebClient ? Je sais comment afficher des données avec WebClient.

43voto

Scott Chamberlain Points 32782

Si le problème que vous rencontrez est que vous pouvez vous authentifier mais que vous ne pouvez pas conserver le cookie d'authentification, voici une version de WebClient qui tient compte des cookies.

private class CookieAwareWebClient : WebClient
{
    public CookieAwareWebClient()
        : this(new CookieContainer())
    { }
    public CookieAwareWebClient(CookieContainer c)
    {
        this.CookieContainer = c;
    }
    public CookieContainer CookieContainer { get; set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);

        var castRequest = request as HttpWebRequest;
        if (castRequest != null)
        {
            castRequest.CookieContainer = this.CookieContainer;
        }

        return request;
    }
}

EDIT : Le lien que vous m'avez donné utilise l'authentification des formulaires avec HTTP POST, je n'ai pas le temps de le parcourir mais au moins il vous donne un début avec Google.

0voto

Peter Lillevold Points 20689

Jetez un coup d'œil à l'utilisation du Références propriété. Par exemple, si l'authentification de base est utilisée, vous devrez définir la propriété sur une instance de NetworkCredential avec le nom d'utilisateur et le mot de passe appropriés.

Le site échantillon montre comment utiliser les informations d'identification de l'utilisateur actuellement connecté pour la demande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X