Есть ли способ передать информацию для входа на сайт в C #? - PullRequest
2 голосов
/ 03 ноября 2010

Я хочу прочитать сайт на C #, используя это:

        WebRequest myWebRequest = WebRequest.Create("http://www.myurl.com/test.aspx");
        WebResponse myWebResponse = myWebRequest.GetResponse();
        Stream ReceiveStream = myWebResponse.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader readStream = new StreamReader(ReceiveStream, encode);
        string strResponse = readStream.ReadToEnd();

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

мой код теперь возвращает ошибку:

The remote server returned an error: (401) Unauthorized.

Я пытался добавить это:

myWebRequest.Credentials = new NetworkCredential("[username]", "[pwd]");

и это:

ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; 

но все равно получена та же ошибка:

Есть ли способ передать эти учетные данные в приведенном выше коде WebRequest?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Если веб-сайт использует базовую аутентификацию HTTP (диалоговое окно входа в систему, созданное браузером), вы можете установить для свойства HttpWebRequest 'Credentials значение NetworkCredential.

Если веб-сайт используетПроверка подлинности на основе форм (форма входа в систему на основе HTML; это более распространенная форма), вам нужно будет сделать отдельный запрос для входа на сайт и поделиться CookieContainer между запросами для сохранения имени входа.
Вы можете использовать Fiddler , чтобы увидеть, как должен выглядеть запрос на вход.

1 голос
/ 03 ноября 2010

Да, конечно, вы можете передавать информацию для входа в систему (когда аутентификация "состоит из базовой аутентификации (которая обычно запрашивается приложением для учетной записи операционной системы) или NTLM (встроенная защита файлов)"):

myWebRequest.Credentials = new NetworkCredential("username","password");

Более глубокое понимание здесь:

http://www.west -wind.com / презентации / dotnetwebrequest / dotnetwebrequest.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...