Книга: C# 4.0: полное руководство
Применение класса WebClient
Применение класса WebClient
В заключение этой главы уместно рассмотреть класс WebClient
. Как упоминалось в самом ее начале, класс WebClient
рекомендуется использовать вместо классов WebRequest
и WebResponse
в том случае, если в приложении требуется лишь выгружать или загружать данные из Интернета. Преимущество класса WebClient
заключается в том, что он автоматически выполняет многие операции, освобождая от их программирования вручную.
В классе WebClient
определяется единственный конструктор.
public WebClient()
Кроме того, в классе WebClient
определяются свойства, сведенные в табл.26.6, а также целый ряд методов, поддерживающих как синхронную, так и асинхронную передачу данных. Но поскольку рассмотрение асинхронной передачи данных выходит за рамки этой главы, то в табл. 26.7 приведены только те методы, которые поддерживают синхронную передачу данных. Все методы класса WebClient
генерируют исключение WebException
, если во время передачи данных возникает ошибка.
Таблица 26.6. Свойства, определенные в классе WebClient
Свойство - Описание
public string BaseAddress { get; set; } - Получает или устанавливает базовый адрес требуемого URI. Если это свойство установлено, то адреса, задаваемые в методах класса WebClient, должны определяться относительно этого базового адреса
public RequestCachePolicy CachePolicy { get; set; } - Получает или устанавливает правила, определяющие, когда именно используется кэш
public ICredentials Credentials { get; set; } - Получает или устанавливает мандат, т.е. учетные данные пользователя. По умолчанию это свойство имеет пустое значение
public Encoding Encoding { get; set; } - Получает или устанавливает схему кодирования символов при передаче строк
public WebHeaderCollection Headers{ get; set; } - Получает или устанавливает коллекцию заголовков запроса
public bool IsBusy { get; } - Принимает логическое значение true, если данные по-прежнему передаются по запросу, а иначе — логическое значение false
public IWebProxy Proxy { get; set; } - Получает или устанавливает прокси-сервер
public NameValueCollection QueryString { get; set; } - Получает или устанавливает строку запроса, состоящую из пар “имя-значение”, которые могут быть присоединены к запросу. Строка запроса отделяется от URI символом ?. Если же таких пар несколько, то каждая из них отделяется символом @
public WebHeaderCollection ResponseHeaders{ get; } - Получает коллекцию заголовков ответа
public bool UseDefaultCredentials { get; set; } - Получает или устанавливает значение, которое определяет, используется ли для аутентификации устанавливаемый по умолчанию мандат. Если принимает логическое значение true, то используется мандат, устанавливаемый по умолчанию, т.е. учетные данные пользователя, в противном случае этот мандат не используется
Таблица 26.7. Методы синхронной передачи, определенные в классе WebClient
Метод - Определение
public byte[] DownloadData(string address) - Загружает информацию по адресу URI, обозначаемому параметром address. Возвращает результат в виде массива байтов
public byte[] DownloadData(Uri address) - Загружает информацию по адресу URI, обозначаемому параметром address. Возвращает результат в виде массива байтов
public void DownloadFile(string uri, string fileName) - Загружает информацию по адресу URI, обозначаемому параметром fileName. Сохраняет результат в файле fileName
public void DownloadFile(Uri address,string fileName) - Загружает информацию по адресу URI, обозначаемому параметром address. Сохраняет результат в файле fileName
public string DownloadString(string address) - Загружает информацию по адресу URI, обозначаемому параметром address. Возвращает результат в виде символьной строки типа string
public string DownloadString(Uri address) - Загружает информацию по адресу URI, обозначаемому параметром address. Возвращает результат в виде символьной строки типа string
public Stream OpenRead(string address) - Возвращает поток ввода для чтения информации по адресу URI, обозначаемому параметром address. По окончании чтения информации этот поток необходимо закрыть
public Stream OpenRead(Uri address) - Возвращает поток ввода для чтения информации по адресу URI, обозначаемому параметром address. По окончании чтения информации этот поток необходимо закрыть
public Stream OpenWrite(string address) - Возвращает поток вывода для записи информации по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть
public Stream OpenWrite(Uri address) - Возвращает поток вывода для записи информации по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть
public Stream OpenWrite(string address, string method) - Возвращает поток вывода для записи информации по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public Stream OpenWrite(Uri address,string method) - Возвращает поток вывода для записи информации по адресу URI, обозначаемому параметром address. По окончании записи информации этот поток необходимо закрыть. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadData(string address, byte[] data) - Записывает информацию из массива data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadData(Uri address,byte[] data) - Записывает информацию из массива data по адресу URI, 'обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadData(string address, string method,byte[] data) - Записывает информацию из массива data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadData(Uri address,string method, byte[] data) - Записывает информацию из массива data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadFile(string address, string fileName) - Записывает информацию в файл fileName по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadFile(Uri address,string fileName) - Записывает информацию в файл fileName по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadFile (string address, string method,string fileName) - Записывает информацию в файл fileName по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadFile(Uri address,string method, string fileName) - Записывает информацию в файл fileName по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public string UploadString(string address, string data) - Записывает строку data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public string UploadString(Uri address, string data) - Записывает строку data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public string UploadString(string address, string method,string data) - Записывает строку data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public string UploadString(Uri address, string method,string data) - Записывает строку data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadValues(string address, NameValueCollection data) - Записывает значения из коллекции data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadValues(Uri address, NameValueCollection data) - Записывает значения из коллекции data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ
public byte[] UploadValues(string address,string method, NameValueCollection data) - Записывает значения из коллекции data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
public byte[] UploadValues(Uri address,string method, NameValueCollection data) - Записывает значения из коллекции data по адресу URI, обозначаемому параметром address. В итоге возвращается ответ. В строке, передаваемой в качестве параметра method, указывается, как именно следует записывать информацию
В приведенном ниже примере программы демонстрируется применение класса WebClient
для загрузки данных в файл по указанному сетевому адресу.
// Использовать класс WebClient для загрузки данных
// в файл по указанному сетевому адресу.
using System;
using System.Net;
using System.IO;
class WebClientDemo {
static void Main() {
WebClient user = new WebClient();
string uri = "http://www.McGraw-Hill.com";
string fname = "data.txt";
try {
Console.WriteLine("Загрузка данных по адресу "
+ uri + " в файл " + fname);
user.DownloadFile(uri, fname);
}
catch (WebException exc) {
Console.WriteLine(exc);
}
Console.WriteLine("Загрузка завершена.");
}
}
Эта программа загружает информацию по адресу www .McGrawHill. com и помещает ее в файл data.txt. Обратите внимание на строки кода этой программы, в которых осуществляется загрузка информации. Изменив символьную строку uri, можно загрузить информацию по любому адресу URI, включая и конкретные файлы, доступные по указываемому URL
Несмотря на то что классы WebRequest
и WebResponse
предоставляют больше возможностей для управления и доступа к более обширной информации, для многих приложений оказывается достаточно и средств класса WebClient
. Этим классом особенно удобно пользоваться в тех случаях, когда требуется только загрузка информации из веб-ресурса. Так, с помощью средств класса WebClient
можно получить из Интернета обновленную документацию на приложение.
- Члены пространства имен System.Net
- Универсальные идентификаторы ресурсов
- Основы организации доступа к Интернету
- Обработка сетевых ошибок
- Обработка исключений
- Класс Uri
- Доступ к дополнительной информации, получаемой в ответ по протоколу HTTP
- Практический пример создания программы MiniCrawler
- Применение класса WebClient
- 3.4. Отношения между классами
- Применение функции scanf( )
- Применение PHP-технологий в программе HtmlPad
- 17.6 Применение агентов новостей для настольных систем
- 2.3. Эмпирическая модель обучения Дэвида Колба и ее применение в практике бизнес-тренинга
- Применение основного потока
- Применение пользовательских атрибутов
- 9.7.1. Определение подкласса
- Инварианты класса и семантика ссылок
- Применение peristaltic.py к арматуре
- Применение лямбда-выражения в качестве задачи
- Проблемы в команде и применение к ним принципов осознанной практики