我正在尝试为使用C#作为可移植dll的UWP应用程序开发一个http代理服务器。但是,重试超时是60秒,与发送的请求数无关,发送了4个请求,但是如果必须重试,我必须等待60秒才能完成少量任务。是否有任何方法可以自动执行此重试超时,从而根据请求数量使用最佳超时值,全局声明可以在sendasync中使用和调用(用于发送请求)?根据发送的http请求数设置自动超时
-1
A
回答
0
在UWP中,有两个我们可以用来发送HTTP请求的HttpClient
。他们是System.Net.Http.HttpClient和Windows.Web.Http.HttpClient。我不确定你正在使用哪一个。
对于System.Net.Http.HttpClient,有两种设置超时的方法。要设置超时从客户端发出的所有请求,我们可以使用HttpClient.Timeout属性:单个请求
var myClient = new System.Net.Http.HttpClient();
myClient.Timeout = TimeSpan.FromSeconds(30);
要设置超时,请使用取消标记模式:
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(30));
var httpClient = new System.Net.Http.HttpClient();
var resourceUri = new Uri("http://www.contoso.com");
try
{
HttpResponseMessage response = await httpClient.GetAsync(resourceUri, cts.Token);
}
catch (TaskCanceledException ex)
{
// Handle request being canceled due to timeout.
}
catch (HttpRequestException ex)
{
// Handle other possible exceptions.
}
对于Windows.Web.Http.HttpClient, Windows.Web.Http.HttpClient类型上没有超时属性。因此,您必须使用上面显示的取消令牌模式。
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(30));
var httpClient = new Windows.Web.Http.HttpClient();
var resourceUri = new Uri("http://www.contoso.com");
try
{
var response = await httpClient.GetAsync(resourceUri).AsTask(cts.Token);
}
catch (TaskCanceledException ex)
{
// Handle request being canceled due to timeout.
}
catch (Exception ex)
{
// Handle other possible exceptions.
}
欲了解更多信息,请参阅Demystifying HttpClient APIs in the Universal Windows Platform。
相关问题
- 1. 设置发送HTTP请求的时间
- 2. 根据请求超时捕获数据
- 3. FSharp.Data HTTP请求 - 无法设置请求超时
- 4. mule ce 3.7.0发送http请求时发生异常 - 超时(java.util.concurrent.TimeoutException)
- 5. HTTP请求超时
- 6. 发送HTTP请求
- 7. http发布请求中的Angular2超时
- 8. Android设备在发出http请求时发生超时错误
- 9. node.js使用临时/ etc/hosts设置发送http请求
- 10. 设置Gatling根据百分比/比率发送请求?
- 11. 的BizTalk动态要求响应发送端口 - 设置超时
- 12. 发送数据从Javafx发送到HTTP POST请求
- 13. 发送HTTP请求(验证请求)
- 14. HTTP发送大字符串导致请求超时
- 15. HTTP,408请求超时
- 16. 超时http请求? Android
- 17. Http请求超时问题
- 18. 去HTTP请求超时
- 19. Express.js HTTP请求超时
- 20. 移动设备发出的HTTP请求
- 21. 在http请求中设置基于套接字的超时
- 22. 为ionic1中的http请求设置超时值angularjs
- 23. 请求被发送到超时
- 24. Java在发送http请求时java.io.EOFException?
- 25. 用swift发送http请求
- 26. MediaPlayer不发送HTTP请求?
- 27. 同步发送http请求
- 28. 从Netduino发送HTTP请求
- 29. 发送HTTP POST请求
- 30. Wit.ai POST /发送HTTP请求
Hello Jay!我很抱歉没有给你提供我的问题的更新。我使用的是system.net.http.httpclient,是的,我明白你要传达的是什么,我将sendasync方法中的请求重试前的超时时间设置为60秒,当我发送一些请求时说4我希望它可能会在20秒后退出。这是我需要根据请求数自动执行重试超时的地方。 –
超时只能在发送请求前设置。如果您的请求已发送,则无法更改超时。 –
对不起周杰伦我觉得你误解了我。我认为最好我通过一个例子来演示。现在说我正在发送N个请求,因为如果N> 30,超时时间是60秒,如果N <30,超时时间是30秒,更具体的东西。我需要为这个逻辑或更具体的东西实现代码。你可以给我你的电子邮件ID,以便我可以提供更多的细节? –