ASP.NET Core 中是否有 PostAsJsonAsync() 方法?
咨询区
LP13
在 Asp.NET 中我一般都用 PostAsJsonAsync()
做数据提交,在 Asp.NET Core 时代我貌似没有找到,按照程序集的命名规范,我觉得应该也是由 Microsoft.AspNet.WebApi.Client
迁移到 Microsoft.AspNetCore.WebApi.Client
中。
回答区
Jeremy Caney
从 .NET 5.0
开始,你说的这个方法被引入到了 HttpClient
中,你可以引入 System.Net.Http.Json
命名空间,可以参考微软的官方文档:https://docs.microsoft.com/en-us/dotnet/api/system.net.http.json.httpclientjsonextensions.postasjsonasync?view=net-5.0 参考如下代码:
using System.Net.Http; //HttpClient, HttpResponseMessage
using System.Net.Http.Json; //HttpClientJsonExtensions
using System.Threading; //CancellationToken
using System.Threading.Tasks; //Tasknamespace ConsoleApp2
{class Program{static void Main(string[] args){var httpClient = new HttpClient();var url = "https://StackOverflow.com";var data = new MyDto();var source = new CancellationTokenSource();var response = await httpClient.PostAsJsonAsync<MyDto>(url, data, source.Token);}}
}
j.ghadiri
之所以没有是因为 *AsJsonAsync()
系列方法本身就不是 ASP.NET Core
项目的一部分,不过你可以在 ASP.NET Core
中扩展一个 PostAsJsonAsync
方法即可 ,参考如下代码:
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;public static class HttpClientExtensions
{public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient httpClient, string url, T data){var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return httpClient.PostAsync(url, content);}public static Task<HttpResponseMessage> PutAsJsonAsync<T>(this HttpClient httpClient, string url, T data){var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return httpClient.PutAsync(url, content);}public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content){var dataAsString = await content.ReadAsStringAsync().ConfigureAwait(false);return JsonConvert.DeserializeObject<T>(dataAsString);}
}
f.capet
既然是异步的 post json
,其实你可以用 HttpClient 中现存的 PostAsync()
方法做个周转就好了,data 数据可以用 JsonConvert.SerializeObject
序列化,参考如下代码:
public static async Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return await httpClient.PostAsync(url, content);
}
点评区
确实现如今都被 HttpClient
所替代,而且这个类还是内置的,不需要引用任何 Nuget 包,太方便了。
ASP.NET Core 中是否有 PostAsJsonAsync() 方法?相关推荐
- ASP.NET Core 中的 User Agent 识别及搜索引擎爬虫鉴定方法
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 百度百科 在 ...
- 《从零开始学ASP.NET CORE MVC》:ASP.NET Core 中的 Main方法(5)
本文出自<从零开始学ASP.NET CORE MVC> 推荐文章:ASP.NET Core Web 项目文件 ASP.NET Core 中的 Main方法 一个开始专心写字的人 在ASP. ...
- 如何使用C#在ASP.NET Core中轻松实现QRCoder
by Yogi 由瑜伽士 如何使用C#在ASP.NET Core中轻松实现QRCoder (How to easily implement QRCoder in ASP.NET Core using ...
- asp.net core中IHttpContextAccessor和HttpContextAccessor的妙用
分享一篇文章,关于asp.net core中httpcontext的拓展. 现在,试图围绕HttpContext.Current构建你的代码真的不是一个好主意,但是我想如果你正在迁移一个企业类型的应用 ...
- 在asp.net core中使用托管服务实现后台任务
在业务场景中经常需要后台服务不停的或定时处理一些任务,这些任务是不需要及时响应请求的. 在 asp.net中会使用windows服务来处理. 在 asp.net core中,可以使用托管服务来实现,托 ...
- ASP.NET Core中显示自定义错误页面-增强版
之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...
- 探索ASP.NET Core中的IStartupFilter
原文:Exploring IStartupFilter in ASP.NET Core 作者:Andrew Lock 译者:Lamond Lu 在本篇博客中,我将介绍一下IStartupFilter, ...
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...
- .ASP NET Core中缓存问题案例
本篇博客中,我将描述一个关于会话状态(Session State)的问题, 这个问题我已经被询问了好几次了. 问题的场景 创建一个新的ASP.NET Core应用程序 一个用户在会话状态中设置了一个字 ...
最新文章
- R语言使用ggplot2可视化互相覆盖的直方图实战(Overlaying histograms)
- DotNet 开发团队图
- 用prop还是attr
- Android开发之如何保证Service不被杀掉(前台服务)
- !!从中位数市盈率看目前市场位置
- yarn下载依赖慢的解决方法
- 计算机硬件检测维修资料,计算机硬件检测维修实训台 Computer hardware detection and maintenance training bench...
- 【完全开源】博客园客户端UWP版(上篇)
- 失败的信息化案例分享
- webbrowser 访问iframe拒绝访问_获取文件夹拒绝访问权限
- AsteriskNow 实用总结
- PHP源码分析-hex2bin函数源码分析
- potplay如何设置加速不变声
- 使用CCleaner删除系统还原点
- 收发电子发票用什么邮箱?
- 《构建之法》读书笔记(2)
- linux fish 中set 设定PATH 和BROWSER
- rpm, tar, gz, bz, bz2, rar, zip, lha, deb, 解压
- 尚硅谷大数据视频_Zookeeper视频教程
- 平面设计中色彩应该如何搭配?