/// <summary>
/// HttpClient扩展类
/// </summary>
public static class HttpClientExtensions
{
/// <summary>
/// HttpClient请求封装
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TResult"></typeparam>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="sendContent"></param>
/// <returns></returns>
public static async Task<ResultInfo<TResult>> RequestAsync<T, TResult>(this HttpClient client, HttpMethod method, string url, T sendContent = default(T))
{
HttpRequestMessage requestMessage = new HttpRequestMessage(method, url)
{
Content = method == HttpMethod.Get ? null : new ObjectContent<T>(sendContent, new JsonMediaTypeFormatter())
};
var response = await client.SendAsync(requestMessage);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsAsync<TResult>(); return new ResultInfo<TResult>(true, "请求成功")
{
Data = content
};
}
else
{
var error = await response.Content.ReadAsAsync<HttpError>(); return new ResultInfo<TResult>(false, error.Message);
}
}
}

.NET HttpClient扩展的更多相关文章

  1. 深入学习HttpClient(一)扩展额外的功能

    HttpClient作为.net4.5新增的Http库除了对于async/await形式的异步支持外,还向我们展示了其强大的扩展能力. [类库的设计] 让我们先看下Httpclient的设计图: 图中 ...

  2. HttpClient 教程 (四)

    第四章 HTTP认证 HttpClient提供对由HTTP标准规范定义的认证模式的完全支持.HttpClient的认证框架可以扩展支持非标准的认证模式,比如NTLM和SPNEGO. 4.1 用户凭证 ...

  3. HttpClient 认证

    第四章 HTTP认证 HttpClient提供对由HTTP标准规范定义的认证模式的完全支持.HttpClient的认证框架可以扩展支持非标准的认证模式,比如NTLM和SPNEGO. 4.1 用户凭证 ...

  4. .Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器

    目标:使用.net core最新的3.0版本,借助httpclient和本机的host域名代理,实现网络请求转发和内容获取,最终显示到目标客户端! 背景:本人在core领域是个新手,对core的使用不 ...

  5. Composer安装Yii2以及相关扩展

    1.安装redis扩展 命令:composer require yiisoft/yii2-redis Git地址:https://github.com/yiisoft/yii2-redis/blob/ ...

  6. .netcore 3.1高性能微服务架构:封装调用外部服务的接口方法--HttpClient客户端思路分析

    众所周知,微服务架构是由一众微服务组成,项目中调用其他微服务接口更是常见的操作.为了便于调用外部接口,我们的常用思路一般都是封装一个外部接口的客户端,使用时候直接调用相应的方法.webservice或 ...

  7. ASP.NET Core扩展库

    亲爱的.Neter们,在我们日复一日的编码过程中是不是会遇到一些让人烦恼的事情: 日志配置太过复杂,各种模板.参数也搞不清楚,每次都要去查看日志库的文档,还需要复制粘贴一些重复代码,好无赖 当需要类型 ...

  8. asp.net core系列 54 IS4用客户端凭据保护API

    一. 概述 本篇开始进入IS4实战学习,从第一个示例开始,该示例是 “使用客户端凭据保护API”,这是使用IdentityServer保护api的最基本场景.该示例涉及到三个项目包括:Identity ...

  9. 第9章 设备授权端点(Device Authorization Endpoint) - IdentityModel 中文文档(v1.0.0)

    OAuth 2.0设备流设备授权的客户端库是作为HttpClient扩展方法提供的. 以下代码发送设备授权请求: var client = new HttpClient(); var response ...

随机推荐

  1. 百度地图API 定位一直4.9E-324

    使用百度地图Android SDK 7.0定位坐标一直为4.9E-324,网上搜索了很多,但是均未解决我的问题,在此坐下解决记录,在设置权限中将应用添加信任即可!android 6.0 其他版本未测! ...

  2. Robot Framework:RF中对时间操作的datetime库常用关键字

    [转自:http://blog.csdn.net/r455678/article/details/52993765] 1.对固定日期进行操作,增加或减去单位时间或者时间段 2.对两个时间段进行操作 3 ...

  3. C# DataGridView显示行号的三种方法

    方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: private void dgGrid_RowPostPaint( obj ...

  4. CentOS 6忘记密码解决办法,root和普通用户均可

    转自nui111的文章:http://blog.csdn.net/nui111/article/details/28007357 说明 操作系统:CentOS 6.0 遇到问题:忘记管理员账号root ...

  5. 《SSM框架搭建》二.mybatis3,spring4整合

    感谢学习文章来自http://www.cnblogs.com/xdp-gacl/p/4271627.html,spring3修改为spring4.还有提示驱动过期的问题,是由于使用了mysql-con ...

  6. RichEdit 追加 RTF

    下面实现追加RTF 到 RichEdit 的功能其本质是:EM_STREAMIN 消息,详细查看 MSDN//--------------------------------------------- ...

  7. React Native 实现页面动态切换

    第一步. 初始化子View constructor(props){ super(props); this.state = { isChange : true, itemView : (<Text ...

  8. grep sed 大批量替换字符串

    sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...

  9. {POJ}{3897}{Maze Stretching}{二分答案+BFS}

    题意:给定迷宫,可以更改高度比,问如何使最短路等于输入数据. 思路:由于是单调的,可以用二分答案,然后BFS验证.这里用优先队列,每次压入也要进行检查(dis大小)防止数据过多,A*也可以.好久不写图 ...

  10. CentOS平台部署vsftp(基于虚拟用户)

    1. 安装FTP 1 2 [root@task ~]# yum install vsftpd –y [root@task ~]# chkconfig vsftpd on          # 配置开机 ...