asp.net – 如何从HttpClient.PostAsJsonAsync()生成的Content-T
发布时间:2020-12-16 04:34:14 所属栏目:asp.Net 来源:网络整理
导读:我有一个问题 HttpClient.PostAsJsonAsync() 除了“Content-Type”标题中的“application / json”之外,该方法还添加了“charset = utf-8” 所以标题看起来像这样: Content-Type:application / json;字符集= utf-8的 虽然ASP.NET WebAPI对此标头没有任何问
我有一个问题
HttpClient.PostAsJsonAsync() 除了“Content-Type”标题中的“application / json”之外,该方法还添加了“charset = utf-8” 所以标题看起来像这样: Content-Type:application / json;字符集= utf-8的 虽然ASP.NET WebAPI对此标头没有任何问题,但我发现我作为客户端工作的其他WebAPI不接受带有此标头的请求,除非它只是application / json. 无论如何在使用PostAsJsonAsync()时从Content-Type中删除“charset = utf-8”,还是应该使用其他方法? 解: using System.Net.Http.Headers; public class NoCharSetJsonMediaTypeFormatter : JsonMediaTypeFormatter { public override void SetDefaultContentHeaders(Type type,HttpContentHeaders headers,MediaTypeHeaderValue mediaType) { base.SetDefaultContentHeaders(type,headers,mediaType); headers.ContentType.CharSet = ""; } } public static class HttpClientExtensions { public static async Task<HttpResponseMessage> PostAsJsonWithNoCharSetAsync<T>(this HttpClient client,string requestUri,T value,CancellationToken cancellationToken) { return await client.PostAsync(requestUri,value,new NoCharSetJsonMediaTypeFormatter(),cancellationToken); } public static async Task<HttpResponseMessage> PostAsJsonWithNoCharSetAsync<T>(this HttpClient client,T value) { return await client.PostAsync(requestUri,new NoCharSetJsonMediaTypeFormatter()); } } 解决方法
您可以从JsonMediaTypeFormatter派生并覆盖SetDefaultContentHeaders.
调用base.SetDefaultContentHeaders()然后清除headers.ContentType.CharSet 然后根据以下代码编写自己的扩展方法: public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client,CancellationToken cancellationToken) { return client.PostAsync(requestUri,new JsonMediaTypeFormatter(),cancellationToken); } 本质上是这样的: public static Task<HttpResponseMessage> PostAsJsonWithNoCharSetAsync<T>(this HttpClient client,CancellatioNToken cancellationToken) { return client.PostAsync(requestUri,cancellationToken); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-2.0 – 如何在生产环境中删除临时ASP.net文件?
- asp.net-mvc – 如何在Controller中使用依赖注入
- asp.net – SCOPE_IDENTITY()不起作用
- asp.net-mvc-3 – 实体框架检测到冲突的更改.尝试使用相同的
- asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理
- asp.net-mvc-3 – 在WebGrid中向Header添加自定义html
- asp.net-mvc – 在bootstrap模式中使用时,MVC中的文件上载返
- asp.net-mvc – 版本弃用Facebook Graph API v2.2
- 如何实现对上下文(Context)数据的统一管理 [提供源代码下
- asp.net – UpdatePanel.Visible = true无效
推荐文章
站长推荐
- asp.net-mvc – 客户端表单验证不适用于MVC中的模
- asp.net-mvc – 无法解析符号’ViewBag’
- asp.net-web-api – mvc webapi cross domain po
- asp.net – 如何防止Entity Framework将FileStre
- asp.net-mvc-4 – ASP.NET 4.5和Web API中的URL重
- 如何解决.Net中冲突的程序集?
- asp.net-mvc – 绑定客户端模板中的两个字段,用于
- asp.net-mvc – 部署同一应用程序的2个版本
- asp.net-mvc – 为服务层设计DI(构造函数注入)的
- asp.net-mvc-3 – 使用connectionStringName进行
热点阅读