您好,登錄后才能下訂單哦!
在C#中,我們可以使用HttpClient
類來處理HTTP請求。為了優雅地處理請求中斷,我們可以使用CancellationToken
來取消請求。以下是一個示例:
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace AjaxExample
{
class Program
{
static async Task Main(string[] args)
{
try
{
await MakeHttpRequestAsync();
}
catch (OperationCanceledException)
{
Console.WriteLine("Request canceled.");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static async Task MakeHttpRequestAsync()
{
using var httpClient = new HttpClient();
using var cts = new CancellationTokenSource();
// 設置超時時間(例如:5秒)
cts.CancelAfter(TimeSpan.FromSeconds(5));
try
{
// 發送請求并傳遞CancellationToken
using var response = await httpClient.GetAsync("https://jsonplaceholder.typicode.com/todos/1", cts.Token);
response.EnsureSuccessStatusCode();
// 讀取響應內容
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (OperationCanceledException)
{
// 請求被取消
throw;
}
catch (Exception ex)
{
// 其他錯誤
throw new Exception($"Error while making the request: {ex.Message}", ex);
}
}
}
}
在這個示例中,我們創建了一個HttpClient
實例,并使用CancellationTokenSource
設置了請求超時時間。我們將CancellationToken
傳遞給GetAsync
方法,以便在超時時取消請求。如果請求被取消,我們會捕獲OperationCanceledException
并優雅地處理它。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。