NetCore3.0使用HttpClient

不带参数的HttpClient

第一步:在Startup的ConfigureServices方法中注入ICO容器

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient(); //将HttpClient注入IOC容器
}

第二步:在控制器中使用

public class HomeController : Controller
{
    private IHttpClientFactory _httpClientFactory; //注入HttpClient工厂类

    public HomeController(IHttpClientFactory httpClientFactory)
    {
        _httpClientFactory = httpClientFactory;
    }
    public async Task<IActionResult> Index()
    {
        //使用HttpClient工厂创建一个HttpClient对象
        var httpClient = _httpClientFactory.CreateClient();

        var result = await httpClient.GetStringAsync("https://www.ifeng.com/");

        return View(result);
    }
}

带参数的HttpClient

第一步

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient("csdn",client=> {
        client.BaseAddress = new Uri("https://www.csdn.net");//设置这个HttpClient要请求地址的Base路径
    });
}

第二步:在控制器中使用

public class HomeController : Controller
{
    private IHttpClientFactory _httpClientFactory;
	
    public HomeController(IHttpClientFactory httpClientFactory)
    {
        _httpClientFactory = httpClientFactory;
    }

    public async Task<IActionResult> Index()
    {
        var httpClient = _httpClientFactory.CreateClient("csdn");

        //因为csdn里面已经配置了base路径了,所以这里只要配置物理路径的后缀即可       
        var result = await httpClient.GetStringAsync("/nav/java");  //其他它请求的就是:https://www.csdn.net/nav/java

        return View(result);
    }
}

以下是HttpClient源码

public static IServiceCollection AddHttpClient(this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException(nameof(services));
    }

    services.AddLogging();
    services.AddOptions();

    //
    // Core abstractions
    //
    services.TryAddTransient<HttpMessageHandlerBuilder, DefaultHttpMessageHandlerBuilder>();
    services.TryAddSingleton<IHttpClientFactory, DefaultHttpClientFactory>();

    //
    // Typed Clients
    //
    services.TryAdd(ServiceDescriptor.Singleton(typeof(ITypedHttpClientFactory<>), typeof(DefaultTypedHttpClientFactory<>)));

    //
    // Misc infrastructure
    //
    services.TryAddEnumerable(ServiceDescriptor.Singleton<IHttpMessageHandlerBuilderFilter, LoggingHttpMessageHandlerBuilderFilter>());

    return services;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NetCore是一个跨平台的开源框架,用于开发和运行各种应用程序。如果要在NetCore使用MQTT协议,可以按照以下步骤进行操作: 1. 添加MQTT NuGet包:在NetCore项目中,可以使用MQTT客户端库来实现与MQTT代理的通信。可以通过NuGet包管理器或在项目文件中手动添加以下NuGet包:Microsoft.Azure.Devices.Client。安装后,将能够在项目中使用MQTT客户端。 2. 创建MQTT客户端:使用MQTT客户端库创建一个MQTT客户端实例。在创建客户端实例时,需要指定MQTT代理的连接字符串和客户端ID。例如: ``` MqttClient mqttClient = new MqttClient(connectionString, clientId); ``` 3. 连接到MQTT代理:使用客户端实例连接到MQTT代理。需要通过调用Connect方法来连接。例如: ``` mqttClient.Connect(); ``` 4. 订阅主题:使用客户端实例订阅感兴趣的主题。通过调用Subscribe方法,并指定要订阅的主题,可以接收该主题下的消息。例如: ``` mqttClient.Subscribe(topic); ``` 5. 发布消息:使用客户端实例发布消息到特定的主题。通过调用Publish方法,并指定要发布的主题和消息内容,可以向指定的主题下发送消息。例如: ``` mqttClient.Publish(topic, message); ``` 6. 处理接收的消息:通过订阅特定的主题,可以接收到MQTT代理发布的消息。可以通过注册消息处理程序来处理接收到的消息。例如: ``` mqttClient.MqttMsgPublishReceived += MqttMsgReceived; ``` 在MqttMsgReceived方法中,可以处理接收到的消息。 以上是在NetCore使用MQTT协议的基本步骤。通过使用MQTT客户端库,可以方便地实现与MQTT代理的通信,并进行消息的订阅和发布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值