HttpClient GetAsync

 

HttpClient example

// Create a New HttpClient object and dispose it when done, so the app doesn't leak resources
using System.Net.Http.Headers;

using (HttpClient client = new HttpClient())
{
    // Call asynchronous network methods in a try/catch block to handle exceptions
    try
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "token");
        HttpResponseMessage response = await client.GetAsync("https://www.google.com");
        string responseBody = await response.EnsureSuccessStatusCode().Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
        Console.WriteLine("-----------------------------------------------------------");

        // Above n lines can be replaced with new helper method below
        string responseBody2 = await client.GetStringAsync("https://www.google.com");
        Console.WriteLine(responseBody2);
    }
    catch (HttpRequestException e)
    {
        Console.WriteLine("\nException Caught!");
        Console.WriteLine("Message :{0} ", e.Message);
    }
}

Console.ReadKey();

說明:

1、使用 HttpClient 的要求要 .NET Framework 4.5 以上。

2、HttpClient 也提供了懶人包 public Task<string> GetStringAsync(string requestUri); 方法,

使用一行程式就把網址內容抓下來(那麼厲害!!!)。

3、HttpClient 在發動 request 之前,如有必要,還可以設定 HttpClient 裡的 DefaultRequestHeaders 屬性。

4、HttpClient 主要提供了 GetAsync() 以非同步的方式取得 HttpResponseMessage 物件,

而 HttpResponseMessage 物件則包含了重要的 HttpContent。

5、HttpResponseMessage 提供了 GET、POST、PUT、DELETE 方法。

6、HttpResponseMessage 裡的 EnsureSuccessStatusCode() 用來確保 StatusCode 為 200 OK,

如果不是,則 throw exception。

7、HttpResponseMessage 裡的 public bool IsSuccessStatusCode { get; } 屬性也是跟

EnsureSuccessStatusCode() 用來確保 StatusCode 為 200 OK,

所以你在判斷 StatusCode 為 200 OK 時,兩種擇一應用即可。

8、HttpContent 則提供了抓網址內容 public Task<string> ReadAsStringAsync(); 的核心方法。

 

參考資料:

MediaTypeHeaderValue Class

HttpClient Class

使用 HttpClient 來存取 GET,POST,PUT,DELETE,PATCH 網路資源