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(); 的核心方法。
參考資料: