我正在尝试为使用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. 设置超时与发送请求使用请求包在nodejs
- 3. 发送标头中的Cookie时发送节点HTTP超时(请求/重置器)
- 4. 根据请求超时捕获数据
- 5. FSharp.Data HTTP请求 - 无法设置请求超时
- 6. mule ce 3.7.0发送http请求时发生异常 - 超时(java.util.concurrent.TimeoutException)
- 7. node.js http-proxy如何根据请求设置超时和处理程序
- 8. Paypal Sandbox Vault:C#操作超时(HTTP请求超时设置为30000ms)
- 9. HTTP请求超时
- 10. 发送HTTP请求
- 11. 发送HTTP请求
- 12. http发布请求中的Angular2超时
- 13. Android设备在发出http请求时发生超时错误
- 14. node.js使用临时/ etc/hosts设置发送http请求
- 15. 设置Gatling根据百分比/比率发送请求?
- 16. 如何减少由odata4j发送的HTTP请求的超时
- 17. 的BizTalk动态要求响应发送端口 - 设置超时
- 18. PHP发送自定义HTTP请求
- 19. 在http请求中发送的数据与持续时间
- 20. 发送POST请求的动态数据
- 21. 发送数据从Javafx发送到HTTP POST请求
- 22. 发送中介忽略HTTP请求数据(仅发送标头!)
- 23. 发送HTTP请求(验证请求)
- 24. HTTP发送大字符串导致请求超时
- 25. 超时http请求? Android
- 26. HTTP,408请求超时
- 27. 去HTTP请求超时
- 28. Http请求超时问题
- 29. Express.js HTTP请求超时
- 30. 快递Http请求超时
Hello Jay!我很抱歉没有给你提供我的问题的更新。我使用的是system.net.http.httpclient,是的,我明白你要传达的是什么,我将sendasync方法中的请求重试前的超时时间设置为60秒,当我发送一些请求时说4我希望它可能会在20秒后退出。这是我需要根据请求数自动执行重试超时的地方。 –
超时只能在发送请求前设置。如果您的请求已发送,则无法更改超时。 –
对不起周杰伦我觉得你误解了我。我认为最好我通过一个例子来演示。现在说我正在发送N个请求,因为如果N> 30,超时时间是60秒,如果N <30,超时时间是30秒,更具体的东西。我需要为这个逻辑或更具体的东西实现代码。你可以给我你的电子邮件ID,以便我可以提供更多的细节? –