Автоматизация бизнеса

Пользовательский поиск

вторник, 17 апреля 2012 г.

Класс WebClient

Для работы в интернет пространстве .Net  представляет нам достаточно много классов, и сегодня рассмотрим один из них.
Если необходимо запросить некий файл с определенного URL (Uniform Resource Locator), на помощь к нам придет один из простейших классов System.Net.WebClient.
.Net Framework поддерживает URL  начинавшиеся с идентификатора http:,https:,file:.

Загрузка файла из Web. 

WebClient представляет нам два метода для загрузки файлов. Смотря как необходимо обрабатывать содержимое загружаемого файла вам понадобится выбрать один из двух методов.
Если надо просто сохранить файл на диск используйте DownloadFile() метод. Метод принимает два параметра - URI файла и место для сохранения файла (путь и имя).



Например:

            WebClient client = new WebClient();
            client.DownloadFile("http://soft-a.pro", "Soft_A_Home_Page.htm");

В этом примере файл будет сохранен в каталоге приложении, можете так же установить полный путь - client.DownloadFile("http://soft-a.pro", @"C:\Soft_A_Home_Page.htm");

Если есть необходимость обработки данных полученных с Web сайта надо воспользоватся методом OpenRead(). Этот метод возвращает ссылку на объект Stream , который можно использовать для извлечения данных в память.


             WebClient client = new WebClient();
             Stream stream = client.OpenRead("http://soft-a.pro");

Ниже приведен простой пример с WebClient и методом OpenRead().
Для начала создайте новый  проект как стандартное Windows Forms приложение. Надо добавить на форму ListBox, измените свойство DockStyle на Fill. Добавьте пространства имен System.Net и System.IO с помощью директив using.

Затем в конструкторе формы добавьте следующий код

            WebClient client = new WebClient();
            Stream stream = client.OpenRead("http://soft-a.pro");
            StreamReader sr = new StreamReader(stream);
            string L;
            while((L=sr.ReadLine())!=null)
            {
                listBox1.Items.Add(L);
            }
            stream.Close();
            sr.Close();


Результат выполнения примера:


В примере подключили класс StreamReader из пространства имен System.IO к сетевому потоку. Это поможет получить данные из потока в текстовом виде с помощью метода ReadLine().






Класс WebClient так же включает метод OpenWrite(). Метод возвращает поток записи позволяющий отправлять данные по заданному URI. По умолчанию метод для отправки данных установлен метод POST, это означает можно указать и другой метод.

Следующий пример показывает как создать файл с помощью класса WebClient и его OpenWrite()   метода.

            WebClient client = new WebClient();
            Stream stream = client.OpenWrite("http://localhost/web/test.txt","PUT");
            StreamWriter sw = new StreamWriter(stream);
            sw.WriteLine("Helo from WebClient");
            stream.Close();
            sw.Close();


Этот фрагмент кода предполагает, что на локальной машине есть каталог web, на который открыт доступ для записи.



Загрузка файла в Web. 


Класс WebClient имеет не менее интересные к рассмотрению методы для работы с Web. Эти методы UploadFile() и UploadData(). Метод UploadFile() загружает файл по указанному адресу под заданным локальным именем. Метод UploadData() загружает бинарные данные, представленные в виде массива байт на указанный URI.

1 комментарий:

  1. Спасибо большое! Все сразу понятно стало :)

    ОтветитьУдалить