Книга: 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 можно получить из Интернета обновленную документацию на приложение.

Оглавление книги


Генерация: 0.057. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз