更改默认超时

cas*_*las 4 c# mvvmcross xamarin

我有以下实现。默认超时为100秒。

我想知道如何更改默认超时?

HttpService.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()))
        {

        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

SU7*_*SU7 10

client.Timeout = 5*1000;不起作用,因为client.Timeout需要某种类型的东西:System.TimeSpan

我使用以下方法更改了超时值:

client.Timeout = TimeSpan.FromSeconds(10); // Timeout value is 10 seconds
Run Code Online (Sandbox Code Playgroud)

您也可以使用其他方法:

仅供参考:

Timeout属性的默认值为100 秒


Pla*_*d3r 7

的默认超时HttpClient100秒


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);
}
Run Code Online (Sandbox Code Playgroud)

请注意,在中进行更改HttpService将影响所有请求。如果要根据请求进行设置,则需要将所需的超时时间作为参数传递。

  • @stom `CancellationTokenSource` 将允许您在触发超时之前取消请求。例如,如果用户导航离开并且您不再需要请求的数据。然后您可以取消请求。 (5认同)
  • 只有更长的超时时间。如果您根本不希望请求超时,也可以将超时设置为httpClient.Timeout = Timeout.InfiniteTimeSpan;。 (3认同)