C# .net core 使用HttpClient调用外部api

一.  自.net framework 4.5之后,微软推崇使用HttpClient用于在程序中访问外部api,且HttpClient使用起来相较于老版的HttpWebRequest等请求方式,使用起来更加方便,以下是最简单的使用方式(其中的ApiResult是我自定义的一个放回结果对象,你们替换成自己的或者直接返回结果即可):

Get:

/// <summary>
/// Get请求(异步)
/// </summary>
/// <param name="url">api地址</param>
/// <returns></returns>
public static async Task<ApiResult> GetAsync<T>(string url) {
    using (HttpClient client = new HttpClient()) { 
        var response = await client.GetAsync(url);
        if (response.StatusCode == System.Net.HttpStatusCode.OK)
        {
            var content = JsonConvert.DeserializeObject<T>(await response.Content.ReadAsStringAsync());
            return ApiResult.OK(result: content);
        }
        else {
            return ApiResult.Fail();
        }
    }
    
}

Post:

/// <summary>
/// Post请求(异步)
/// </summary>
/// <param name="url">api地址</param>
/// <param name="parameter">序列化之后的json</param>
/// <param name="ContentType">请求格式</param>
/// <returns></returns>
public static async Task<ApiResult> PostAsync<T>(string url, string parameter, string? ContentType = "application/json")
{
    using (HttpClient client = new HttpClient())
    {
        string responseBody = string.Empty;
        client.DefaultRequestHeaders.Add("Method", "Post");
        var content = new StringContent(parameter, Encoding.UTF8, ContentType);
        var response = await client.PostAsync(url, content);
        if (response.StatusCode == HttpStatusCode.OK)
        {
            responseBody = response.Content.ReadAsStringAsync().Result;
            var res = JsonConvert.DeserializeObject<T>(responseBody);
            return ApiResult.OK(result: res);
        }
        else {
            return ApiResult.Fail();
        }
    }
}

二. HttpClient的用法还有很多,可以根据具体的业务场景选择使用,如下:

GetAsync(String) 以异步操作将GET请求发送给指定的URI
GetAsync(URI) 以异步操作将GET请求发送给指定的URI
GetAsync(String, HttpCompletionOption) 以异步操作的HTTP完成选项发送GET请求到指定的URI
GetAsync(String, CancellationToken) 以异步操作的取消标记发送GET请求到指定URI
GetAsync(Uri, HttpCompletionOption) 以异步操作的HTTP完成选项发送GET请求到指定的URI
GetAsync(Uri, HttpCompletionOption, CancellationToken) 以异步操作的HTTP完成选项和取消标记发送DELETE请求到指定的URI
GetAsync(Uri, HttpCompletionOption, CancellationToken) 以异步操作的HTTP完成选项和取消标记发送DELETE请求到指定的URI
GetByteArrayAsync(String) 将GET请求发送到指定URI并在异步操作中以字节数组的形式返回响应正文
GetByteArrayAsync(Uri) 将GET请求发送到指定URI并在一异步操作中以字节数组形式返回响应正文
GetHashCode 用作特定类型的哈希函数,继承自Object
GetStreamAsync(String) 将GET请求发送到指定URI并在异步操作中以流的形式返回响应正文
GetStreamAsync(Uri) 将GET请求发送到指定URI并在异步操作以流的形式返回响应正文
GetStreamAsync(String) 将GET请求发送到指定URI并在异步操作中以字符串的形式返回响应正文
GetStringAsync(Uri) 将GET请求发送到指定URI并在异步操作中以字符串形式返回响应正文

想深入了解HttpClient可以查看: github.dev/SteamRE/SteamKit/blob/402aa3ff9052fc7ee0a8035c6025f5117601e425/SteamKit2/SteamKit2/Steam/WebAPI/WebAPI.cs#L636#L645icon-default.png?t=N7T8https://github.dev/SteamRE/SteamKit/blob/402aa3ff9052fc7ee0a8035c6025f5117601e425/SteamKit2/SteamKit2/Steam/WebAPI/WebAPI.cs#L636#L645

PS: 技术有限,如果有描述不当的地方,欢迎提出来,感谢各位的鼓励,一起加油~ 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值