System.Net.WebClient с именем пользователя и паролем - PullRequest
1 голос
/ 15 июня 2011

У меня есть объект WebClient, и я использую метод DownloadFileAsync для получения файла, хотя, прежде чем я смогу, мне нужно войти на сайт, что кажется трудным.Я хочу войти в систему https://ssl.rapidshare.com/ (которая, похоже, использует проверку подлинности с помощью форм).Я обнаружил следующий код WebClient, который распознает файлы cookie:

public class CookieAwareWebClient:WebClient {
    private CookieContainer m_container=new CookieContainer();
    protected override WebRequest GetWebRequest(Uri address) {
        WebRequest request=base.GetWebRequest(address);
        if(request is HttpWebRequest) {
            (request as HttpWebRequest).CookieContainer=m_container;
        }
        return request;
    }
}

Однако, боюсь, что мой код не работает совместно:

gWebClient=new CookieAwareWebClient();
if(gGroupEntry.GetStringProperty(CGroupEntry.EStringProperties.DownloadURL).Contains("rapidshare.com"))
    gWebClient.Credentials=new System.Net.NetworkCredential(CSaverLoader.gUsername, CSaverLoader.gPassword, "https://ssl.rapidshare.com/");
gWebClient.DownloadFileCompleted+=new AsyncCompletedEventHandler(gWebClient_DownloadFileCompleted);
gWebClient.DownloadProgressChanged+=new DownloadProgressChangedEventHandler(gWebClient_DownloadProgressChanged);
gWebClient.DownloadFileAsync(new Uri(gGroupEntry.GetStringProperty(CGroupEntry.EStringProperties.DownloadURL)), gDownloadDirectory+"/"+gGroupEntry.GetStringProperty(CGroupEntry.EStringProperties.FileName));

Почемуэто может быть?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Можете ли вы использовать HttpWebRequest Class в пространстве имен System.Net? Это намного более гибкий класс, чем облегченный WebClient для выполнения HTTP-запросов, и включает такие вещи, как HttpWebRequest.CookieContainer Property .

0 голосов
/ 15 июня 2011

Если веб-сайт использует проверку подлинности на основе файлов cookie, а не обычную проверку подлинности HTTP, вам необходимо поместить файл cookie в CookieContainer вместо установки учетных данных.

...