Как войти на сайт с помощью WebClient? - PullRequest
29 голосов
/ 20 января 2011

Я хочу загрузить что-либо, используя объект WebClient в C #, но домен загрузки требует, чтобы я вошел в систему. Как я могу войти и сохранить данные сеанса, используя WebClient? Я знаю, как публиковать данные с помощью WebClient.

Ответы [ 2 ]

49 голосов
/ 20 января 2011

Если проблема заключается в том, что вы можете аутентифицироваться, но не можете сохранить куки-файл аутентификации, то это версия WebClient с поддержкой куки-файлов.

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: Ссылка, которую вы мне дали, использует аутентификацию по формам с HTTP POST, хотя у меня нет времени на это, но, по крайней мере, это дает вам начало работы с Google.

0 голосов
/ 20 января 2011

Взгляните на использование свойства Credentials .Например, если используется обычная аутентификация, вам необходимо установить для свойства NetworkCredential с правильными именем пользователя и паролем.

Образец , на который указываетиспользовать для входа учетные данные пользователя, вошедшего в систему.

...