Авторизация на сервере и получение содержимого страницы в TextBox

bratkovsky

Подскажите как осуществить авторизацию на сервере и получить содержимое в TextBox1. Пробовал такой вариант:
Dim http = (New System.Net.WebClient).DownloadString("http://login:password@192.168.1.1")
TextBox1.Text = http
но он почему то не работает В итоге получаю одну и ту же ошибку: 401 (Несанкционированый)
Dim http = (New System.Net.WebClient).DownloadString("http://192.168.1.1")
TextBox1.Text = http
2 ответа

bratkovsky

bratkovsky, без страницы сайта не подскажешь. Вариантов может быть много. Скорее всего на сайте форма, на форме поля для ввода(инпуты) и кнопка. Вполне возможно, что кроме инпутов форма передает еще какие-то данные. Так же многие сервера не дают отправить POST запросы без кукисов, юзерагента и т.д. Код который у вас в первом сообщении примитивный, там ничего этого нет, поэтому и 401.Нужно открыть страницу в браузере. Ввести данные авторизации. Через сниффер перехватить то, что отправляет форма в момент нажатия на кнопку. Далее разбираем лог полученный со сниффера. Затем повторяем то же самое согласно полученному логу со сниффера, но уже через нашу программу, готово! Иначе, никак!И да, лучше использовать класс вебреквест, он более заточен под вышеописанные задачи. Вебклиент в данном случае не совсем то.


bratkovsky

Попробуй сначала задать новый экземпляр класса WebClient и задать для него свойство Credentials, а потом уже загружать строку.
Dim wcDownload As WebClient = New WebClient With {.Credentials = New NetworkCredential With {.UserName = "login", .Password = "password"}}
Dim http = wcDownload.DownloadString("http://192.168.1.1")
TextBox1.Text = http