在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。