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

注解

谨慎

WebRequestHttpWebRequestServicePointWebClient 已过时,不应将其用于新开发。 请改用 HttpClient

WebClient 类提供了一些常见方法,用于将数据发送到或接收 URI 标识的任何本地、Intranet 或 Internet 资源中的数据。

WebClient 类使用 WebRequest 类提供对资源的访问。 WebClient 实例可以使用注册到 WebRequest.RegisterPrefix 方法的任何 WebRequest 后代访问数据。

注意

默认情况下,.NET Framework 支持以 http:https:ftp:file: 方案标识符开头的 URI。

下表介绍了将数据上传到资源的 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 设置为 WebClient 实例中的 true

继承者说明

派生类应调用 WebClient 的基类实现,以确保派生类按预期工作。

构造函数

WebClient()
已过时.

初始化 WebClient 类的新实例。

属性

AllowReadStreamBuffering
已过时.

获取或设置一个值,该值指示是否缓冲从 WebClient 实例的 Internet 资源读取的数据。

AllowWriteStreamBuffering
已过时.

获取或设置一个值,该值指示是否缓冲写入 WebClient 实例的 Internet 资源的数据。

BaseAddress

获取或设置由 WebClient发出的请求的基本 URI。

CachePolicy

获取或设置此 WebClient 实例使用 WebRequest 对象获取的任何资源的应用程序的缓存策略。

CanRaiseEvents

获取一个值,该值指示组件是否可以引发事件。

(继承自 Component)
Container

获取包含 ComponentIContainer

(继承自 Component)
Credentials

获取或设置发送到主机并用于对请求进行身份验证的网络凭据。

DesignMode

获取一个值,该值指示 Component 当前是否处于设计模式。

(继承自 Component)
Encoding

获取或设置用于上传和下载字符串的 Encoding

Events

获取附加到此 Component的事件处理程序的列表。

(继承自 Component)
Headers

获取或设置与请求关联的标头名称/值对的集合。

IsBusy

获取 Web 请求是否正在进行。

Proxy

获取或设置此 WebClient 对象使用的代理。

QueryString

获取或设置与请求关联的查询名称/值对的集合。

ResponseHeaders

获取与响应关联的标头名称/值对的集合。

Site

获取或设置 ComponentISite

(继承自 Component)
UseDefaultCredentials

获取或设置一个 Boolean 值,该值控制是否使用请求发送 DefaultCredentials

方法

CancelAsync()

取消挂起的异步操作。

CreateObjRef(Type)

创建一个对象,其中包含生成用于与远程对象通信的代理所需的所有相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放 Component使用的所有资源。

(继承自 Component)
Dispose(Boolean)

释放 Component 使用的非托管资源,并选择性地释放托管资源。

(继承自 Component)
DownloadData(String)

从指定的 URI 将资源下载为 Byte 数组。

DownloadData(Uri)

从指定的 URI 将资源下载为 Byte 数组。

DownloadDataAsync(Uri)

从指定为异步操作的 URI 将资源下载为 Byte 数组。

DownloadDataAsync(Uri, Object)

从指定为异步操作的 URI 将资源下载为 Byte 数组。

DownloadDataTaskAsync(String)

使用任务对象从指定为异步操作的 URI 中将资源下载为 Byte 数组。

DownloadDataTaskAsync(Uri)

使用任务对象从指定为异步操作的 URI 中将资源下载为 Byte 数组。

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。 要下载的资源被指定为包含 URI 的 String

DownloadString(Uri)

将请求的资源下载为 String。 要下载的资源被指定为 Uri

DownloadStringAsync(Uri)

下载指定为 Uri的资源。 此方法不会阻止调用线程。

DownloadStringAsync(Uri, Object)

将指定的字符串下载到指定的资源。 此方法不会阻止调用线程。

DownloadStringTaskAsync(String)

使用任务对象从指定为异步操作的 URI 中将资源下载为 String

DownloadStringTaskAsync(Uri)

使用任务对象从指定为异步操作的 URI 中将资源下载为 String

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetService(Type)

返回一个对象,该对象代表由 Component 或其 Container提供的服务。

(继承自 Component)
GetType()

获取当前实例的 Type

(继承自 Object)
GetWebRequest(Uri)

返回指定资源的 WebRequest 对象。

GetWebResponse(WebRequest)

返回指定 WebRequestWebResponse

GetWebResponse(WebRequest, IAsyncResult)

使用指定的 IAsyncResult返回指定 WebRequestWebResponse

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)

为从指定为 String的 URI 的资源下载的数据打开可读流。

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[])

使用 POST 方法将数据缓冲区上传到 URI 标识的资源。 此方法不会阻止调用线程。

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
已过时.

当使用写入流将数据写入资源的异步操作关闭时发生。

适用于

另请参阅