xamarin 更改默认超时

kx7yvsdv  于 2023-02-10  发布在  其他
关注(0)|答案(4)|浏览(164)

我有如下的实现,默认的超时是100秒。
我想知道我怎样才能改变默认超时?

HTTP服务.cs

public class HttpService : IHttpService
{

   private static async Task GoRequestAsync<T>(string url, Dictionary<string, object> parameters, HttpMethod method,
        Action<T> successAction, Action<Exception> errorAction = null, string body = "")
        where T : class
    {
        using (var httpClient = new HttpClient(new HttpClientHandler()))
        {

        }
    }
 }
thtygnil

thtygnil1#

HttpClient的默认超时为100秒。

HttpClient超时

您可以根据HttpClient进行调整,并在HttpService中设置自定义超时持续时间。
httpClient.Timeout = 5000;

HttpClient请求超时

您也可以通过取消令牌CancellationTokenSource定义超时

using (var cts = new CancellationTokenSource(new TimeSpan(0, 0, 5))
{
    await httpClient.GetAsync(url, cts.Token).ConfigureAwait(false);
}

一些注意事项:

1.在HttpClient内部进行更改将影响所有请求。如果您希望对每个请求进行更改,则需要将所需的超时持续时间作为参数传递。
1.如果CancellationTokenSource的超时值小于HttpClient设置的Timeout,并且HttpClient的超时值不是无限的,则传递CancellationTokenSource的示例将有效。否则,HttpClient将超时。

mspsb9vt

mspsb9vt2#

client.Timeout = 5*1000;不起作用,因为client.Timeout需要以下类型的内容:System.TimeSpan
我使用以下命令更改了超时值:

client.Timeout = TimeSpan.FromSeconds(10); // Timeout value is 10 seconds

也可以使用其他方法:

  • 起始日
  • 起始时间
  • 起始毫秒
  • 起始分钟数
  • 起始秒数
  • 起始刻度

仅供参考:
Timeout属性的默认值为100秒

icnyk63a

icnyk63a3#

由于我们没有看到任何任务创建超时,我不能帮助。
但如果您在应用程序的引擎盖下使用System.Net.Http,MSDN会说:
默认值为100,000毫秒(100秒)。
然后可以更改HttpClient.Timeout属性的值

clent.Timeout = 5*1000;
hm2xizp9

hm2xizp94#

如果你的httpservice类有一个依赖性IHttpClient(它应该这样而不是更新一个httpclient),那么你可以在配置服务时通过在你的客户端上设置这个属性来改变默认值。
例如

services.AddHttpClient<IHttpService , HttpService >(x => x.Timeout = TimeSpan.FromSeconds(10));

相关问题