【问题标题】:how to implement httpclientfactory in xamarin?如何在 xamarin 中实现 httpclientfactory?
【发布时间】:2020-07-29 13:17:20
【问题描述】:

我每次提出请求时都会创建一个新的HttpClient,但在互联网上搜索后发现这不是最好的使用方式。

我应该使用HttpClientFactory,但我查找的每个网站都使用ServiceCollection()IServiceCollection() 之类的:

var services = new ServiceCollection();
services.AddHttpClient()
var serviceProvider = services.BuildServiceProvider();

public void ConfigureServices(.IserviceCollection services)
{
    services.addHttpClient(name, lambda expr);
}

当我尝试创建新的ServiceCollection 时,Visual Studio 要求我创建一个类,那么如何在 Xamarin 中实现HttpClientFactory

编辑:我使用这个link 进行实验,但我不知道如何将其合并到我的项目中:我有这样的东西:

class Database
{
    private static HttpClient client = new HttpClient();

    async public static Task<string> Some Request() {
        try {
            ...
            var response = await client.PostAsync(requestUrl, content);
            if (response.StatusCode == HttpStatusCode.OK)
            {
                return await response.Content.ReadAsStringAsync();
            }
            return ..
        }
        catch(...) {...}
    }
}

public static class Startup
{
    public static IServiceProvider ServiceProvider { get; set; }
    public static void Init()
    {
        //same thing as link without stream
    }
    static void ConfigureServices(HostBuilderContext ctx, IServiceCollection services)
    {
        services.AddHttpClient();
    }

【问题讨论】:

标签: c# xamarin httpclient httpclientfactory


【解决方案1】:

您确定您已将Microsoft.Extensions.DependencyInjection nuget 添加到您的项目中并与它一起使用

using Microsoft.Extensions.DependencyInjection;

【讨论】:

  • 不,但我忘了在link之后添加一些包
  • 但是dependencyInjection对我来说是一个奇怪的东西,我以前从未使用过它,所以我还不知道如何在我的项目中使用它,因为处理数据库请求的类是静态的(所有方法都是静态的)所以如果调用一次来初始化我的HttpClient 字段,那么它是否与带有 DNS 问题的单例HttpClient 相同?
猜你喜欢
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多