请问关于c的具体应用场景有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计234个文字,预计阅读时间需要1分钟。
HttpClient作为官方推荐的http客户端,相较于之前的WebClient和WebRequest使用更方便。但默认无法为每个请求单独设置超时,只能给HttpClient设置默认超时,使用起来不够灵活。
HttpClient作为官方推荐的foo/"); request.SetTimeout(TimeSpan.FromSeconds(5)); var response = await client.SendAsync(request);
如果服务器在5秒内响应数据,我们将会捕获到一个TimeoutException,而不是TaskCanceledException,因此事情似乎按预期进行。
为了检测cancellation是否正确运行,我们传入一个在2秒(比超时实际小)后会被取消的CancellationToken:
var request = new HttpRequestMessage(HttpMethod.Get, "foo/"); request.SetTimeout(TimeSpan.FromSeconds(5)); var cts = new CancellationTokenSource(TimeSpan.FromSeconds(2)); var response = await client.SendAsync(request, cts.Token);
这时,我们可以捕获到TaskCanceledException,这正是我们期望的。
总结
通过实现我们自己的Http Handler,我们可以用一个智能的timout handler来解决开始我们提出的问题。
这篇文章的所有代码在这
以上就是c# HttpClient设置超时的步骤的详细内容,更多关于c# HttpClient设置超时的资料请关注自由互联其它相关文章!
本文共计234个文字,预计阅读时间需要1分钟。
HttpClient作为官方推荐的http客户端,相较于之前的WebClient和WebRequest使用更方便。但默认无法为每个请求单独设置超时,只能给HttpClient设置默认超时,使用起来不够灵活。
HttpClient作为官方推荐的foo/"); request.SetTimeout(TimeSpan.FromSeconds(5)); var response = await client.SendAsync(request);
如果服务器在5秒内响应数据,我们将会捕获到一个TimeoutException,而不是TaskCanceledException,因此事情似乎按预期进行。
为了检测cancellation是否正确运行,我们传入一个在2秒(比超时实际小)后会被取消的CancellationToken:
var request = new HttpRequestMessage(HttpMethod.Get, "foo/"); request.SetTimeout(TimeSpan.FromSeconds(5)); var cts = new CancellationTokenSource(TimeSpan.FromSeconds(2)); var response = await client.SendAsync(request, cts.Token);
这时,我们可以捕获到TaskCanceledException,这正是我们期望的。
总结
通过实现我们自己的Http Handler,我们可以用一个智能的timout handler来解决开始我们提出的问题。
这篇文章的所有代码在这
以上就是c# HttpClient设置超时的步骤的详细内容,更多关于c# HttpClient设置超时的资料请关注自由互联其它相关文章!

