【问题标题】:Xamarin Forms: singleton or new HttpClientXamarin 表单:单例或新的 HttpClient
【发布时间】:2017-02-28 11:29:51
【问题描述】:

在 Xamarin 表单中,我必须使用远程 Web 服务。在许多 Xamarin 课程中,我看到了 HttpClient 的使用。例如:

private async Task<HttpClient> GetClient()
{
    HttpClient client = new HttpClient();

    if (string.IsNullOrEmpty(authorizationKey))
    {
        authorizationKey = await client.GetStringAsync(Url + "login");
        authorizationKey = JsonConvert.DeserializeObject<string>(authorizationKey);
    }

    client.DefaultRequestHeaders.Add("Authorization", authorizationKey);
    client.DefaultRequestHeaders.Add("Accept", "application/json");

    return client;
}

每次都要执行一次远程调用,实例化一个新的HttpClient。在每个新请求上实例化一个新的 HttpClient 是正确的模式,还是必须为每个请求使用相同的 HttpClient 实例?

【问题讨论】:

  • 单例......
  • 每次都创建一个新的 HttpClient 绝对不是最佳实践

标签: xamarin xamarin.ios xamarin.forms


【解决方案1】:

HttpClient允许同时进行多个连接,可以放心使用同一个对象。

"默认的 HttpClient 是开始发送请求的最简单方式。单个 HttpClient 可用于同时发送任意数量的 HTTP 请求,因此在许多情况下,您只需创建一个 HttpClient,然后将其用于您的所有要求。”

更多info

【讨论】:

    【解决方案2】:

    最好使用一个实例,就像 Zroq 说的那样。在第 9 频道的视频中进行了解释:You are probably using HttpClient wrong

    【讨论】:

      【解决方案3】:

      最好使用一个实例,或者在我的情况下,为不同的标头使用多个实例。 当您尝试创建过多实例时会发生以下情况:

      Why do I get a NullReferenceException when creating an Instance of System.Net.Http.HttpClient()?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多