本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

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

取得或設定傳送要求時所使用之網際網路資源的統一資源識別元 (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()

所使用的 unmanaged 的資源並進行處置 managed 資源的版本 HttpMessageInvoker(繼承自 HttpMessageInvoker。)

System_CAPS_protmethodDispose(Boolean)

釋放 HttpClient 所使用的 Unmanaged 資源,並選擇性處置 Managed 資源。(覆寫 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)

以非同步作業的方式,傳送 GET 要求和 HTTP 完成選項至指定的 Uri。

System_CAPS_pubmethodGetAsync(String, HttpCompletionOption, CancellationToken)

以非同步作業的方式,傳送 GET 要求和 HTTP 完成選項以及取消語彙基元至指定的 Uri。

System_CAPS_pubmethodGetAsync(Uri)

以非同步作業的方式,將 GET 要求傳送至指定的 URI。

System_CAPS_pubmethodGetAsync(Uri, CancellationToken)

以非同步作業的方式,傳送 GET 要求和取消權杖至指定的 Uri。

System_CAPS_pubmethodGetAsync(Uri, HttpCompletionOption)

以非同步作業的方式,傳送 GET 要求和 HTTP 完成選項至指定的 Uri。

System_CAPS_pubmethodGetAsync(Uri, HttpCompletionOption, CancellationToken)

以非同步作業的方式,傳送 GET 要求和 HTTP 完成選項以及取消語彙基元至指定的 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 mb 或以上),則應用程式應該串流處理這些下載項目並不會使用預設的緩衝處理。 如果使用預設的緩衝處理的用戶端記憶體使用量會很大,而且可能會大幅導致效能降低。

具備執行緒安全的方法如下:

  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 起供應

此類型的任何 public static (在 Visual Basic 中 共用 在 Visual Basic 中) 成員皆為安全執行緒。不保證任何執行個體成員為安全執行緒。

回到頁首
顯示: