C# 发出异步的Get请求
下列的下載代碼示例是 HttpClientSample。它以不同的方式異步調用Web 服務。為了演示本例使用的不同方法,使用了命令行參數。
示例代碼使用了以下名稱空間:
System System.Linq System.Net System.Net.Http System.Net.Http.Headers System.Threading System.Threading.Tasks第一段代碼實例化一個 HttpClient 對象,把它賦予私有字段 _httpClient,以進行重用。這個 HttpClient 對象是線程安全的,所以一個 HttpClient 對象就可以用于處理多個請求。HttpClient 的每個實例都維護它自己的線程池,所以 HttpClient 實例之間的請求會被隔離。
接著調用 GetAsync,給它傳遞要調用的方法的地址,把一個 HTTP GET 請求發送給服務器。GetAsync 調用被重載為帶一個字符串或 URI 對象。
對GetAsync 的調用返回一個HttpResponseMessage 對象。HttpResponseMessage 類表示包含標題、狀態和內容的響應。檢查響應的IsSuccessfulStatusCode屬性,可以確定請求是否成功。如果調用成功,就使用 ReadAsStringAsync 方法把返回的內容檢索為一個字符串:
private const string NorthwindUrl ="http://services.data.org/Northwind/Northwind.svc/Regions"; private?const?string?IncorrectUrl?="http://services.data.org/Northwind1/Northwind.svc/Regions";private HttpClient _httpClient; public?HttpClient?HttpClient?=>_httpClient????(_httpClient?=?new?HttpClient());private async Task GetDataSimpleAsync() {HttpResponseMessage response = await HttpClient.GetAsync(NorthwindUrl); if(response.IsSuccessStatusCode){Console.WriteLine($"Response Status Code: {(int)response.StatusCode} " +$"{response.ReasonPhrase}") ;string responseBodyAsText =await response.Content.ReadAsStringAsyne();Console.WriteLine($"Received payload of {responseBodyAsText.Length} characters");Console.WriteLine();Console.WriteLine(responseBodyAsText);}} }用命令行參數 -s 執行這段代碼,產生以下輸出:?
Response Status Code: 200 OK Received payload of 3379 characters <?xml version="1.0" encoding="utf-8"?> <!- ... ->注意:
因為 HttpClient 類使用 GetAsync 方法調用,且使用了 await 關鍵字,所以返回調用線程,并可以執行其他工作。GetAsync 方法的結果可用時,就用該方法繼續線程,響應寫入 response 變量。
?微信公眾號?
Dotnet講堂
總結
以上是生活随笔為你收集整理的C# 发出异步的Get请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Blazor University (9
- 下一篇: 使用基于Roslyn的编译时AOP框架来