c# - 如何在 xamarin 中实现 httpclientfactory?
问题描述
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 要求我创建一个类,那么如何HttpClientFactory
在Xamarin中实现?
编辑:我使用此链接进行实验,但我不知道如何将其合并到我的项目中:我有这样的东西:
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();
}
解决方案
您确定已将Microsoft.Extensions.DependencyInjection nuget 添加到您的项目中并将其与
using Microsoft.Extensions.DependencyInjection;
推荐阅读
- z3 - 如何建模能力奖励,以便可以使用 Z3 动态添加/删除选项
- regex - 有没有办法使用正则表达式来匹配ansible中的主机?
- java - 在 Maven 多模块项目的父配置中将模块设置为对其他模块的依赖项
- html - 不能在另一个 div 中水平居中 div
- kubernetes - 将 JHipster 项目部署到 Kubernetes 时出现“创建文件“/target”时出错”
- python - 为什么 return 语句不终止函数?
- c - 有人可以解释为什么 printf("%s", str + str[0] - str[3]); 在 C 中工作?
- ruby-on-rails - 如何从 rake 任务向前端发送数据(即如何与服务器发送的事件结合)?
- angular - 服务器端渲染实际上不是“渲染”的服务器端?
- node.js - 有没有办法处理发送到 NodeJS 中 HTTPS 端口的 HTTP 请求