web-dev-qa-db-fra.com

Comment me connecter à un site avec WebClient?

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

31
MonsterMMORPG

Si le problème que vous rencontrez est que vous pouvez vous authentifier mais vous ne pouvez pas conserver le cookie d'authentification, voici une version de WebClient compatible avec les 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 par formulaires avec HTTP POST, je n'ai pas le temps de le parcourir mais au moins il vous donne un début avec Google.

49
Scott Chamberlain