asp.net core使用httpclient

主要讲解常见的get请求和post请求

GET

var client = new HttpClient();
//3秒钟不响应就超时
client.Timeout=TimeSpan.FromSeconds(3);
using HttpResponseMessage response = await client.GetAsync("todos/3");
var jsonResponse = await response.Content.ReadAsStringAsync();
Console.WriteLine($"{jsonResponse}\n");

POST

var client = new HttpClient();
var nowTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
client.DefaultRequestHeaders.Add("time",nowTimestamp);
//3秒钟不响应就超时
client.Timeout=TimeSpan.FromSeconds(3);
var param = new List<KeyValuePair<string, string>>();
param.Add(new KeyValuePair<string, string>("a", "xxxx"));
var response = await client.PostAsync(url, new FormUrlEncodedContent(param));
if (response.StatusCode == HttpStatusCode.OK)
{
    var jsonStr = await response.Content.ReadAsStringAsync();
    return JsonConvert.DeserializeObject<XXXObject>(jsonStr);
}

var errorMsg = await response.Content.ReadAsStringAsync();

post发送json数据

//param 传入的对象
var jsonData = JsonHelper.ObjectToJsonString(param);
var client = new HttpClient();
client.DefaultRequestHeaders
     .Accept
     .Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.Timeout = TimeSpan.FromSeconds(60);
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
try
{
	//url 是请求链接
    var response = await client.PostAsync(url, content);
    var jsonStr = await response.Content.ReadAsStringAsync();
    if (response.StatusCode == HttpStatusCode.OK)
    {
        return (true, jsonStr);
    }

    return (false, jsonStr);
}
catch (Exception ex)
{
    return (false, ex.Message);
}

post其他请求只需要改变content内容即可
在这里插入图片描述

asp.net core中使用

//注入
services.AddHttpClient();
//构造函数使用
private readonly IHttpClientFactory _httpClientFactory;
public ValuesController(IHttpClientFactory httpClientFactory)
{
    _httpClientFactory = httpClientFactory;
}

参考

https://www.cnblogs.com/xiaoxiaotank/p/16273773.html
https://github.com/tmenier/Flurl
https://learn.microsoft.com/zh-cn/dotnet/fundamentals/networking/http/httpclient
https://www.cnblogs.com/willick/p/net-core-httpclient.html

还是flurl用习惯了效率高一些

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值