Net і c #, клас webclient

Якщо необхідно тільки запросити файл з певного URI (Uniform Resource Identifier - уніфікований ідентифікатор ресурсу), то найпростішим у використанні класом .NET, який підходить для цього, буде System.Net.WebClient. Цей виключно високорівнева клас призначений для виконання базових операцій за допомогою всього однієї або двох команд. В даний час в .NET Framework підтримуються URI, що починаються з ідентифікаторів http :. https: і file:.

Важливо відзначити, що термін URL (Uniform Resource Locator - універсальний локатор ресурсів) більше не використовується в нових технічних специфікаціях, а замість нього віддається перевага URI. URI має приблизно таке ж значення, що і URL, але трохи більш загальний, тому що в URL-адреса не мається на увазі обов'язкове застосування одного із знайомих протоколів, таких як HTTP або FTP.

Завантаження файлів

Для завантаження файлів з використанням WebClient доступні два методи. Вибір методу залежить від того, як має оброблятися вміст файлу. Якщо необхідно просто зберегти файл на диску, слід застосовувати метод DownloadFile (). Цей метод приймає два параметри: URI файлу і місце розташування (шлях і ім'я файлу) для збереження запитаних даних:

Часто застосування повинне обробляти дані, витягнуті з веб-сайту. Це забезпечує метод OpenRead (). повертає посилання на Stream, яку можна використовувати для отримання даних в пам'ять:

У наступному прикладі демонструється застосування методу WebClient.OpenRead (). Вміст завантаженої сторінки буде відображено в елементі управління TextBox. Для початку створіть новий проект як стандартний додаток WPF і додайте об'єкт управління TextBox на ім'я txb. На початок файлу до списку директив using потрібно додати посилання на простору імен System.Net і System.IO. Потім додайте обробник кліка по кнопці:

У цьому прикладі клас StreamReader з простору імен System.IO підключається до мережевого потоку. Це дозволяє отримати дані з потоку у вигляді тексту, використовуючи високорівневі методи на кшталт ReadLine (). На рис. показані результати запуску цього коду:

Net і c #, клас webclient

Клас WebClient також включає в себе метод OpenWrite (). Цей метод повертає записується потік для відправки даних за певним URI. При цьому ви можете вибрати спосіб, який повинен використовуватися для відправки даних на хост, за замовчуванням це POST.

вивантаження файлів

У класі WebClient також є методи UploadFile () і UploadData (). Вони використовуються, коли потрібно відправити HTML-форму або вивантажити на сервер цілий файл. UploadFile () вивантажує файл в зазначене місце розташування за вказаною імені локального файлу, в той час як UploadData () вивантажує двійкові дані, представлені у вигляді масиву байт, за вказаною URI (є також метод DownloadData (). Призначений для вилучення масиву байтів з URI) .

Хоча клас WebClient дуже простий у використанні, він має дуже обмеженими можливостями. Зокрема, неможливо передавати реєстраційні дані для аутентифікації - одна з проблем, пов'язаних із завантаженням даних, полягає в тому, що лише відносно небагато сайтів приймають файли без аутентифікації.

У запити можна додавати інформацію заголовка і перевіряти заголовки у відповіді, але лише в дуже загальному сенсі - специфічна підтримка якогось одного протоколу відсутній. Причина в тому, що WebClient - клас загального призначення, призначений для роботи з будь-яким протоколом, що дозволяє відправляти запити і отримувати відповіді (на кшталт HTTP і FTP). Він не може обробити ніяких коштів, специфічних для якогось одного протоколу, наприклад, сокети, які специфічні для HTTP. Щоб скористатися перевагами цих коштів, потрібно працювати з сімейством класів, заснованим на двох інших класах з простору імен System.Net, а саме - WebRequest і WebResponse.

Схожі статті