Поделиться через


WebClient Класс

Определение

Предоставляет распространенные методы для отправки данных в ресурс и получения данных из ресурса, определяемого универсальным кодом ресурса (URI).

public ref class WebClient : System::ComponentModel::Component
public ref class WebClient sealed : System::ComponentModel::Component
public class WebClient : System.ComponentModel.Component
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class WebClient : System.ComponentModel.Component
[System.Runtime.InteropServices.ComVisible(true)]
public class WebClient : System.ComponentModel.Component
type WebClient = class
    inherit Component
[<System.Runtime.InteropServices.ComVisible(true)>]
type WebClient = class
    inherit Component
Public Class WebClient
Inherits Component
Public NotInheritable Class WebClient
Inherits Component
Наследование
Атрибуты

Примеры

Следующий пример кода принимает URI ресурса, извлекает его и отображает ответ.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::IO;
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args == nullptr || args->Length == 1 )
   {
      throw gcnew ApplicationException( "Specify the URI of the resource to retrieve." );
   }

   WebClient^ client = gcnew WebClient;
   
   // Add a user agent header in case the 
   // requested URI contains a query.
   client->Headers->Add( "user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)" );
   Stream^ data = client->OpenRead( args[ 1 ] );
   StreamReader^ reader = gcnew StreamReader( data );
   String^ s = reader->ReadToEnd();
   Console::WriteLine( s );
   data->Close();
   reader->Close();
   delete client;
}

using System;
using System.Net;
using System.IO;

public class Test
{
    public static void Main(string[] args)
    {
        if (args == null || args.Length == 0)
        {
            throw new ApplicationException("Specify the URI of the resource to retrieve.");
        }
        using WebClient client = new WebClient();

        // Add a user agent header in case the
        // requested URI contains a query.

        client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

        using Stream data = client.OpenRead(args[0]);
        using StreamReader reader = new StreamReader(data);
        string s = reader.ReadToEnd();
        Console.WriteLine(s);
    }
}
Imports System.Net
Imports System.IO



Public Class Test
    
    Public Shared Sub Main(args() As String)
        If args Is Nothing OrElse args.Length = 0 Then
            Throw New ApplicationException("Specify the URI of the resource to retrieve.")
        End If
        Using client As New WebClient()
            
            ' Add a user agent header in case the 
            ' requested URI contains a query.
            client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
            
            Using data As Stream = client.OpenRead(args(0))
                Using reader As New StreamReader(data)
                    Dim s As String = reader.ReadToEnd()
                    Console.WriteLine(s)
                End Using
            End Using
        End Using
    End Sub
End Class

Комментарии

Осторожность

WebRequest, HttpWebRequest, ServicePointи WebClient устарели, и их не следует использовать для новой разработки. Вместо этого используйте HttpClient.

Класс WebClient предоставляет общие методы для отправки данных в любой локальный, интрасети или интернет-ресурс, определяемый URI.

Класс WebClient использует класс WebRequest для предоставления доступа к ресурсам. WebClient экземпляры могут получать доступ к данным с любым WebRequest потомком, зарегистрированным в методе WebRequest.RegisterPrefix.

Заметка

По умолчанию платформа .NET Framework поддерживает URI, начинающиеся с http:, https:, ftp:и идентификаторов схем file:.

В следующей таблице описаны методы WebClient для отправки данных в ресурс.

Метод Описание
OpenWrite Извлекает Stream, используемый для отправки данных в ресурс.
OpenWriteAsync Извлекает Stream, используемый для отправки данных в ресурс, не блокируя вызывающий поток.
UploadData Отправляет массив байтов в ресурс и возвращает массив Byte, содержащий любой ответ.
UploadDataAsync Отправляет массив Byte в ресурс, не блокируя вызывающий поток.
UploadFile Отправляет локальный файл в ресурс и возвращает массив Byte, содержащий любой ответ.
UploadFileAsync Отправляет локальный файл в ресурс, не блокируя вызывающий поток.
UploadValues Отправляет NameValueCollection в ресурс и возвращает массив Byte, содержащий любой ответ.
UploadValuesAsync Отправляет NameValueCollection в ресурс и возвращает массив Byte, содержащий любой ответ, не блокируя вызывающий поток.
UploadString Отправляет String в ресурс и возвращает String, содержащую любой ответ.
UploadStringAsync Отправляет String в ресурс, не блокируя вызывающий поток.

В следующей таблице описаны методы WebClient для скачивания данных из ресурса.

Метод Описание
OpenRead Возвращает данные из ресурса в виде Stream.
OpenReadAsync Возвращает данные из ресурса, не блокируя вызывающий поток.
DownloadData Загружает данные из ресурса и возвращает массив Byte.
DownloadDataAsync Загружает данные из ресурса и возвращает массив Byte, не блокируя вызывающий поток.
DownloadFile Загружает данные из ресурса в локальный файл.
DownloadFileAsync Загружает данные из ресурса в локальный файл, не блокируя вызывающий поток.
DownloadString Загружает String из ресурса и возвращает String.
DownloadStringAsync Загружает String из ресурса, не блокируя вызывающий поток.

Для отмены асинхронных операций можно использовать метод CancelAsync.

Экземпляр WebClient по умолчанию не отправляет необязательные заголовки HTTP. Если запросу требуется необязательный заголовок, необходимо добавить заголовок в коллекцию Headers. Например, чтобы сохранить запросы в ответе, необходимо добавить заголовок агента пользователя. Кроме того, серверы могут возвращать 500 (внутренняя ошибка сервера), если отсутствует заголовок агента пользователя.

AllowAutoRedirect задано значение true в WebClient экземплярах.

Примечания для тех, кто наследует этот метод

Производные классы должны вызывать реализацию базового класса WebClient, чтобы обеспечить правильность работы производного класса.

Конструкторы

WebClient()
Устаревшие..

Инициализирует новый экземпляр класса WebClient.

Свойства

AllowReadStreamBuffering
Устаревшие..

Возвращает или задает значение, указывающее, следует ли буферивировать данные из ресурса Интернета для экземпляра WebClient.

AllowWriteStreamBuffering
Устаревшие..

Возвращает или задает значение, указывающее, следует ли буферивировать данные, записанные в интернет-ресурс для экземпляра WebClient.

BaseAddress

Возвращает или задает базовый универсальный код ресурса (URI) для запросов, выполненных WebClient.

CachePolicy

Возвращает или задает политику кэша приложения для всех ресурсов, полученных этим экземпляром WebClient, с помощью WebRequest объектов.

CanRaiseEvents

Возвращает значение, указывающее, может ли компонент вызвать событие.

(Унаследовано от Component)
Container

Возвращает IContainer, содержащую Component.

(Унаследовано от Component)
Credentials

Возвращает или задает сетевые учетные данные, отправляемые узлу и используемые для проверки подлинности запроса.

DesignMode

Возвращает значение, указывающее, находится ли Component в режиме конструктора.

(Унаследовано от Component)
Encoding

Возвращает или задает Encoding, используемый для отправки и скачивания строк.

Events

Возвращает список обработчиков событий, подключенных к этой Component.

(Унаследовано от Component)
Headers

Возвращает или задает коллекцию пар имени заголовка и значения, связанных с запросом.

IsBusy

Возвращает, выполняется ли веб-запрос.

Proxy

Возвращает или задает прокси-сервер, используемый этим объектом WebClient.

QueryString

Возвращает или задает коллекцию пар имени запроса и значения, связанных с запросом.

ResponseHeaders

Возвращает коллекцию пар имени заголовка и значения, связанных с ответом.

Site

Возвращает или задает ISiteComponent.

(Унаследовано от Component)
UseDefaultCredentials

Возвращает или задает значение Boolean, которое определяет, отправляется ли DefaultCredentials запросами.

Методы

CancelAsync()

Отменяет ожидающая асинхронная операция.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые Component.

(Унаследовано от Component)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые Component, и при необходимости освобождает управляемые ресурсы.

(Унаследовано от Component)
DownloadData(String)

Загружает ресурс в виде массива Byte из указанного URI.

DownloadData(Uri)

Загружает ресурс в виде массива Byte из указанного URI.

DownloadDataAsync(Uri)

Загружает ресурс в виде массива Byte из URI, указанного как асинхронная операция.

DownloadDataAsync(Uri, Object)

Загружает ресурс в виде массива Byte из URI, указанного как асинхронная операция.

DownloadDataTaskAsync(String)

Загружает ресурс в виде массива Byte из URI, указанного как асинхронная операция с помощью объекта задачи.

DownloadDataTaskAsync(Uri)

Загружает ресурс в виде массива Byte из URI, указанного как асинхронная операция с помощью объекта задачи.

DownloadFile(String, String)

Загружает ресурс с указанным универсальным кодом ресурса (URI) в локальный файл.

DownloadFile(Uri, String)

Загружает ресурс с указанным универсальным кодом ресурса (URI) в локальный файл.

DownloadFileAsync(Uri, String)

Загружает в локальный файл ресурс с указанным универсальным кодом ресурса (URI). Этот метод не блокирует вызывающий поток.

DownloadFileAsync(Uri, String, Object)

Загружает в локальный файл ресурс с указанным универсальным кодом ресурса (URI). Этот метод не блокирует вызывающий поток.

DownloadFileTaskAsync(String, String)

Загружает указанный ресурс в локальный файл в виде асинхронной операции с помощью объекта задачи.

DownloadFileTaskAsync(Uri, String)

Загружает указанный ресурс в локальный файл в виде асинхронной операции с помощью объекта задачи.

DownloadString(String)

Загружает запрошенный ресурс в виде String. Ресурс для скачивания указывается как String, содержащий универсальный код ресурса (URI).

DownloadString(Uri)

Загружает запрошенный ресурс в виде String. Скачиваемый ресурс указывается как Uri.

DownloadStringAsync(Uri)

Загружает ресурс, указанный как Uri. Этот метод не блокирует вызывающий поток.

DownloadStringAsync(Uri, Object)

Загружает указанную строку в указанный ресурс. Этот метод не блокирует вызывающий поток.

DownloadStringTaskAsync(String)

Загружает ресурс в виде String из URI, указанного как асинхронная операция с помощью объекта задачи.

DownloadStringTaskAsync(Uri)

Загружает ресурс в виде String из URI, указанного как асинхронная операция с помощью объекта задачи.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetService(Type)

Возвращает объект, представляющий службу, предоставляемую Component или Container.

(Унаследовано от Component)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetWebRequest(Uri)

Возвращает объект WebRequest для указанного ресурса.

GetWebResponse(WebRequest)

Возвращает WebResponse для указанного WebRequest.

GetWebResponse(WebRequest, IAsyncResult)

Возвращает WebResponse для указанного WebRequest с помощью указанного IAsyncResult.

InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
OnDownloadDataCompleted(DownloadDataCompletedEventArgs)

Вызывает событие DownloadDataCompleted.

OnDownloadFileCompleted(AsyncCompletedEventArgs)

Вызывает событие DownloadFileCompleted.

OnDownloadProgressChanged(DownloadProgressChangedEventArgs)

Вызывает событие DownloadProgressChanged.

OnDownloadStringCompleted(DownloadStringCompletedEventArgs)

Вызывает событие DownloadStringCompleted.

OnOpenReadCompleted(OpenReadCompletedEventArgs)

Вызывает событие OpenReadCompleted.

OnOpenWriteCompleted(OpenWriteCompletedEventArgs)

Вызывает событие OpenWriteCompleted.

OnUploadDataCompleted(UploadDataCompletedEventArgs)

Вызывает событие UploadDataCompleted.

OnUploadFileCompleted(UploadFileCompletedEventArgs)

Вызывает событие UploadFileCompleted.

OnUploadProgressChanged(UploadProgressChangedEventArgs)

Вызывает событие UploadProgressChanged.

OnUploadStringCompleted(UploadStringCompletedEventArgs)

Вызывает событие UploadStringCompleted.

OnUploadValuesCompleted(UploadValuesCompletedEventArgs)

Вызывает событие UploadValuesCompleted.

OnWriteStreamClosed(WriteStreamClosedEventArgs)
Устаревшие..

Вызывает событие WriteStreamClosed.

OpenRead(String)

Открывает доступный для чтения поток для данных, скачанных из ресурса с универсальным кодом ресурса (URI), указанным в качестве String.

OpenRead(Uri)

Открывает доступный для чтения поток для данных, скачанных из ресурса с универсальным кодом ресурса (URI), указанным в качестве Uri.

OpenReadAsync(Uri)

Открывает доступный для чтения поток, содержащий указанный ресурс. Этот метод не блокирует вызывающий поток.

OpenReadAsync(Uri, Object)

Открывает доступный для чтения поток, содержащий указанный ресурс. Этот метод не блокирует вызывающий поток.

OpenReadTaskAsync(String)

Открывает доступный для чтения поток, содержащий указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

OpenReadTaskAsync(Uri)

Открывает доступный для чтения поток, содержащий указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

OpenWrite(String)

Открывает поток для записи данных в указанный ресурс.

OpenWrite(String, String)

Открывает поток для записи данных в указанный ресурс с помощью указанного метода.

OpenWrite(Uri)

Открывает поток для записи данных в указанный ресурс.

OpenWrite(Uri, String)

Открывает поток для записи данных в указанный ресурс с помощью указанного метода.

OpenWriteAsync(Uri)

Открывает поток для записи данных в указанный ресурс. Этот метод не блокирует вызывающий поток.

OpenWriteAsync(Uri, String)

Открывает поток для записи данных в указанный ресурс. Этот метод не блокирует вызывающий поток.

OpenWriteAsync(Uri, String, Object)

Открывает поток для записи данных в указанный ресурс с помощью указанного метода. Этот метод не блокирует вызывающий поток.

OpenWriteTaskAsync(String)

Открывает поток для записи данных в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

OpenWriteTaskAsync(String, String)

Открывает поток для записи данных в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

OpenWriteTaskAsync(Uri)

Открывает поток для записи данных в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

OpenWriteTaskAsync(Uri, String)

Открывает поток для записи данных в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

ToString()

Возвращает String, содержащую имя Component, если таковой имеется. Этот метод не должен быть переопределен.

(Унаследовано от Component)
UploadData(String, Byte[])

Отправляет буфер данных в ресурс, определенный URI.

UploadData(String, String, Byte[])

Отправляет буфер данных в указанный ресурс с помощью указанного метода.

UploadData(Uri, Byte[])

Отправляет буфер данных в ресурс, определенный URI.

UploadData(Uri, String, Byte[])

Отправляет буфер данных в указанный ресурс с помощью указанного метода.

UploadDataAsync(Uri, Byte[])

Отправляет буфер данных в ресурс, определенный URI, с помощью метода POST. Этот метод не блокирует вызывающий поток.

UploadDataAsync(Uri, String, Byte[])

Отправляет буфер данных в ресурс, определенный URI, с помощью указанного метода. Этот метод не блокирует вызывающий поток.

UploadDataAsync(Uri, String, Byte[], Object)

Отправляет буфер данных в ресурс, определенный URI, с помощью указанного метода и идентификации маркера.

UploadDataTaskAsync(String, Byte[])

Отправляет буфер данных, содержащий массив Byte, в URI, указанный в качестве асинхронной операции с помощью объекта задачи.

UploadDataTaskAsync(String, String, Byte[])

Отправляет буфер данных, содержащий массив Byte, в URI, указанный в качестве асинхронной операции с помощью объекта задачи.

UploadDataTaskAsync(Uri, Byte[])

Отправляет буфер данных, содержащий массив Byte, в URI, указанный в качестве асинхронной операции с помощью объекта задачи.

UploadDataTaskAsync(Uri, String, Byte[])

Отправляет буфер данных, содержащий массив Byte, в URI, указанный в качестве асинхронной операции с помощью объекта задачи.

UploadFile(String, String)

Отправляет указанный локальный файл в ресурс с указанным универсальным кодом ресурса (URI).

UploadFile(String, String, String)

Отправляет указанный локальный файл в указанный ресурс с помощью указанного метода.

UploadFile(Uri, String)

Отправляет указанный локальный файл в ресурс с указанным универсальным кодом ресурса (URI).

UploadFile(Uri, String, String)

Отправляет указанный локальный файл в указанный ресурс с помощью указанного метода.

UploadFileAsync(Uri, String)

Отправляет указанный локальный файл в указанный ресурс с помощью метода POST. Этот метод не блокирует вызывающий поток.

UploadFileAsync(Uri, String, String)

Отправляет указанный локальный файл в указанный ресурс с помощью метода POST. Этот метод не блокирует вызывающий поток.

UploadFileAsync(Uri, String, String, Object)

Отправляет указанный локальный файл в указанный ресурс с помощью метода POST. Этот метод не блокирует вызывающий поток.

UploadFileTaskAsync(String, String)

Отправляет указанный локальный файл в ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadFileTaskAsync(String, String, String)

Отправляет указанный локальный файл в ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadFileTaskAsync(Uri, String)

Отправляет указанный локальный файл в ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadFileTaskAsync(Uri, String, String)

Отправляет указанный локальный файл в ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadString(String, String)

Отправляет указанную строку в указанный ресурс с помощью метода POST.

UploadString(String, String, String)

Отправляет указанную строку в указанный ресурс с помощью указанного метода.

UploadString(Uri, String)

Отправляет указанную строку в указанный ресурс с помощью метода POST.

UploadString(Uri, String, String)

Отправляет указанную строку в указанный ресурс с помощью указанного метода.

UploadStringAsync(Uri, String)

Отправляет указанную строку в указанный ресурс. Этот метод не блокирует вызывающий поток.

UploadStringAsync(Uri, String, String)

Отправляет указанную строку в указанный ресурс. Этот метод не блокирует вызывающий поток.

UploadStringAsync(Uri, String, String, Object)

Отправляет указанную строку в указанный ресурс. Этот метод не блокирует вызывающий поток.

UploadStringTaskAsync(String, String)

Отправляет указанную строку в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadStringTaskAsync(String, String, String)

Отправляет указанную строку в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadStringTaskAsync(Uri, String)

Отправляет указанную строку в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadStringTaskAsync(Uri, String, String)

Отправляет указанную строку в указанный ресурс в качестве асинхронной операции с помощью объекта задачи.

UploadValues(String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI).

UploadValues(String, String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным URI, с помощью указанного метода.

UploadValues(Uri, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI).

UploadValues(Uri, String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным URI, с помощью указанного метода.

UploadValuesAsync(Uri, NameValueCollection)

Отправляет данные в указанной коллекции имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI). Этот метод не блокирует вызывающий поток.

UploadValuesAsync(Uri, String, NameValueCollection)

Отправляет данные в указанной коллекции имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI), с помощью указанного метода. Этот метод не блокирует вызывающий поток.

UploadValuesAsync(Uri, String, NameValueCollection, Object)

Отправляет данные в указанной коллекции имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI), с помощью указанного метода. Этот метод не блокирует вызывающий поток и позволяет вызывающему объекту передавать объект методу, который вызывается при завершении операции.

UploadValuesTaskAsync(String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI) как асинхронную операцию с помощью объекта задачи.

UploadValuesTaskAsync(String, String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI) как асинхронную операцию с помощью объекта задачи.

UploadValuesTaskAsync(Uri, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI) как асинхронную операцию с помощью объекта задачи.

UploadValuesTaskAsync(Uri, String, NameValueCollection)

Отправляет указанную коллекцию имен и значений в ресурс, определенный указанным универсальным кодом ресурса (URI) как асинхронную операцию с помощью объекта задачи.

События

Disposed

Происходит при удалении компонента вызовом метода Dispose().

(Унаследовано от Component)
DownloadDataCompleted

Происходит при завершении асинхронной операции загрузки данных.

DownloadFileCompleted

Происходит при завершении асинхронной операции скачивания файлов.

DownloadProgressChanged

Происходит, когда асинхронная операция скачивания успешно передает некоторые или все данные.

DownloadStringCompleted

Происходит при завершении асинхронной операции загрузки ресурсов.

OpenReadCompleted

Происходит, когда асинхронная операция открытия потока, содержащего ресурс, завершается.

OpenWriteCompleted

Происходит, когда асинхронная операция открытия потока для записи данных в ресурс завершается.

UploadDataCompleted

Происходит при завершении асинхронной операции отправки данных.

UploadFileCompleted

Происходит при завершении асинхронной операции отправки файлов.

UploadProgressChanged

Происходит, когда асинхронная операция отправки успешно передает некоторые или все данные.

UploadStringCompleted

Происходит при завершении асинхронной операции отправки строк.

UploadValuesCompleted

Происходит при завершении асинхронной отправки коллекции имен и значений.

WriteStreamClosed
Устаревшие..

Происходит при закрытии асинхронной операции записи данных в ресурс с помощью потока записи.

Применяется к

См. также раздел