本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

HttpClient 类

.NET Framework (current version)
 
System_CAPS_note说明

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

提供基本类,用于发送 HTTP 请求和接收来自通过 URI 确认的资源的 HTTP 响应。

命名空间:   System.Net.Http
程序集:  System.Net.Http(位于 System.Net.Http.dll)

System.Object
  System.Net.Http.HttpMessageInvoker
    System.Net.Http.HttpClient

public class HttpClient : HttpMessageInvoker

名称说明
System_CAPS_pubmethodHttpClient()

初始化 HttpClient 类的新实例。

System_CAPS_pubmethodHttpClient(HttpMessageHandler)

用特定的处理程序初始化 HttpClient 类的新实例。

System_CAPS_pubmethodHttpClient(HttpMessageHandler, Boolean)

用特定的处理程序初始化 HttpClient 类的新实例。

名称说明
System_CAPS_pubpropertyBaseAddress

获取或设置发送请求时使用的 Internet 资源的统一资源标识符 (URI) 的基址。

System_CAPS_pubpropertyDefaultRequestHeaders

获取与每个请求一起发送的标题。

System_CAPS_pubpropertyMaxResponseContentBufferSize

获取或设置读取响应内容时要缓冲的最大字节数。

System_CAPS_pubpropertyTimeout

获取或设置请求超时前等待的时间跨度。

名称说明
System_CAPS_pubmethodCancelPendingRequests()

取消该实例所有挂起的请求。

System_CAPS_pubmethodDeleteAsync(String)

以异步操作将 DELETE 请求发送给指定 URI。

System_CAPS_pubmethodDeleteAsync(String, CancellationToken)

用以异步操作的取消标记发送 DELETE 请求到指定的 URI。

System_CAPS_pubmethodDeleteAsync(Uri)

以异步操作将 DELETE 请求发送给指定 URI。

System_CAPS_pubmethodDeleteAsync(Uri, CancellationToken)

用以异步操作的取消标记发送 DELETE 请求到指定的 URI。

System_CAPS_pubmethodDispose()

释放非托管的资源并释放托管资源的使用由 HttpMessageInvoker(继承自 HttpMessageInvoker。)

System_CAPS_protmethodDispose(Boolean)

释放由 HttpClient 使用的非托管资源,并可根据需要释放托管资源。(覆盖 HttpMessageInvoker.Dispose(Boolean)。)

System_CAPS_pubmethodEquals(Object)

确定指定的对象是否等于当前对象。(继承自 Object。)

System_CAPS_protmethodFinalize()

在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(继承自 Object。)

System_CAPS_pubmethodGetAsync(String)

以异步操作将 GET 请求发送给指定 URI。

System_CAPS_pubmethodGetAsync(String, CancellationToken)

用以异步操作的取消标记发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetAsync(String, HttpCompletionOption)

用以异步操作的 HTTP 完成选项发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetAsync(String, HttpCompletionOption, CancellationToken)

用以异步操作的 HTTP 完成选项和取消标记发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetAsync(Uri)

以异步操作将 GET 请求发送给指定 URI。

System_CAPS_pubmethodGetAsync(Uri, CancellationToken)

用以异步操作的取消标记发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetAsync(Uri, HttpCompletionOption)

用以异步操作的 HTTP 完成选项发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetAsync(Uri, HttpCompletionOption, CancellationToken)

用以异步操作的 HTTP 完成选项和取消标记发送 GET 请求到指定的 URI。

System_CAPS_pubmethodGetByteArrayAsync(String)

将 GET 请求发送到指定 URI 并在异步操作中以字节数组的形式返回响应正文。

System_CAPS_pubmethodGetByteArrayAsync(Uri)

将 GET 请求发送到指定 URI 并在异步操作中以字节数组的形式返回响应正文。

System_CAPS_pubmethodGetHashCode()

作为默认哈希函数。(继承自 Object。)

System_CAPS_pubmethodGetStreamAsync(String)

将 GET 请求发送到指定 URI 并在异步操作中以流的形式返回响应正文。

System_CAPS_pubmethodGetStreamAsync(Uri)

将 GET 请求发送到指定 URI 并在异步操作中以流的形式返回响应正文。

System_CAPS_pubmethodGetStringAsync(String)

将 GET 请求发送到指定 URI 并在异步操作中以字符串的形式返回响应正文。

System_CAPS_pubmethodGetStringAsync(Uri)

将 GET 请求发送到指定 URI 并在异步操作中以字符串的形式返回响应正文。

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_protmethodMemberwiseClone()

创建当前 Object 的浅表副本。(继承自 Object。)

System_CAPS_pubmethodPostAsync(String, HttpContent)

以异步操作将 POST 请求发送给指定 URI。

System_CAPS_pubmethodPostAsync(String, HttpContent, CancellationToken)

用以异步操作的取消标记发送 POST 请求。

System_CAPS_pubmethodPostAsync(Uri, HttpContent)

以异步操作将 POST 请求发送给指定 URI。

System_CAPS_pubmethodPostAsync(Uri, HttpContent, CancellationToken)

用以异步操作的取消标记发送 POST 请求。

System_CAPS_pubmethodPutAsync(String, HttpContent)

以异步操作将 PUT 请求发送给指定 URI。

System_CAPS_pubmethodPutAsync(String, HttpContent, CancellationToken)

用以异步操作的取消标记发送 PUT 请求。

System_CAPS_pubmethodPutAsync(Uri, HttpContent)

以异步操作将 PUT 请求发送给指定 URI。

System_CAPS_pubmethodPutAsync(Uri, HttpContent, CancellationToken)

用以异步操作的取消标记发送 PUT 请求。

System_CAPS_pubmethodSendAsync(HttpRequestMessage)

以异步操作发送 HTTP 请求。

System_CAPS_pubmethodSendAsync(HttpRequestMessage, CancellationToken)

以异步操作发送 HTTP 请求。(覆盖 HttpMessageInvoker.SendAsync(HttpRequestMessage, CancellationToken)。)

System_CAPS_pubmethodSendAsync(HttpRequestMessage, HttpCompletionOption)

以异步操作发送 HTTP 请求。

System_CAPS_pubmethodSendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken)

以异步操作发送 HTTP 请求。

System_CAPS_pubmethodToString()

返回表示当前对象的字符串。(继承自 Object。)

HttpClient类实例充当要发送的 HTTP 请求的会话。 HttpClient实例是适用于该实例执行的所有请求的设置集合。 此外,每个HttpClient实例使用其自己的连接池,隔离执行的其他请求来自其请求HttpClient实例。

HttpClient还可充当基类更具体的 HTTP 客户端。 示例将提供特定于 Facebook web 服务的其他方法 FacebookHttpClient (GetFriends 方法,例如)。

默认情况下,HttpWebRequest将用于向服务器发送请求。 此行为可以修改通过在构造函数重载采用之一中指定不同的通道HttpMessageHandler实例作为参数。 如果身份验证或缓存等功能是必需的WebRequestHandler可以用于配置设置和实例可以传递给构造函数。 返回的处理程序可传递到一个构造函数重载采用HttpMessageHandler参数。

如果应用使用HttpClient和中的相关类System.Net.Http命名空间打算下载大量数据 (50 兆字节或更多),则应用程序应流式传输的下载文件并不使用的默认缓冲。 如果使用的默认缓冲,则客户端内存使用情况将变得很大,可能会显著导致性能下降。

下面的方法是线程安全:

  1. CancelPendingRequests

  2. DeleteAsync

  3. GetAsync

  4. GetByteArrayAsync

  5. GetStreamAsync

  6. GetStringAsync

  7. PostAsync

  8. PutAsync

  9. SendAsync

HttpClient被用于一次实例化和重新使用应用程序的整个生存期。 实例化 HttpClient 类,为每个请求,则将耗尽重度负载下可用的插槽数。 这将导致 SocketException 错误。 下面是使用 HttpClient 正确示例。

public class GoodController : ApiController
{
    // OK
    private static readonly HttpClient HttpClient;

    static GoodController()
    {
        HttpClient = new HttpClient();
    }
}

 static async void Main()
{

    // Create a New HttpClient object.
    HttpClient client = new HttpClient();

    // Call asynchronous network methods in a try/catch block to handle exceptions
    try	
    {
       HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
       response.EnsureSuccessStatusCode();
       string responseBody = await response.Content.ReadAsStringAsync();
       // Above three lines can be replaced with new helper method below
       // string responseBody = await client.GetStringAsync(uri);

       Console.WriteLine(responseBody);
    }  
    catch(HttpRequestException e)
    {
       Console.WriteLine("\nException Caught!");	
       Console.WriteLine("Message :{0} ",e.Message);
    }

    // Need to call dispose on the HttpClient object
    // when done using it, so the app doesn't leak resources
    client.Dispose(true);
 }

通用 Windows 平台
自 8 起可用
.NET Framework
自 4.5 起可用
可移植类库
可移植 .NET 平台 中受支持
Windows Phone
自 8.1 起可用

此类型的所有公共静态(Visual Basic 中的 已共享 在 Visual Basic 中)成员都是线程安全的。不保证所有实例成员都是线程安全的。

返回页首
显示: