asp.net – 如何从HttpClient.PostAsJsonAsync()生成的Content-Type标头中删
发布时间:2020-05-24 10:06:04 所属栏目:asp.Net 来源:互联网
导读:我有一个问题 HttpClient.PostAsJsonAsync() 除了“Content-Type”标题中的“application / json”之外,该方法还添加了“charset = utf-8” 所以标题看起来像这样: Content-Type:application / json;字符集= utf-8的 虽然ASP.NET WebAPI对此标头没有任何问
|
我有一个问题
除了“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 C#
- 从代码隐藏调用ASP.NET Web API
- ASP.NET会话超时测试
- asp.net-mvc – 获取在Identity 2中具有指定角色的用户列表
- asp.net-web-api2 – 在WebAPI2项目中加载System.IdentityM
- 如何编译x64 asp.net网站?
- asp.net – 将ViewModel从演示文稿传递到服务 – 是否可以?
- 在Textbox asp.net上使用JQuery DatePicker
- asp.net – 是否有可能欺骗或重用VIEWSTATE或检测它是否受到
- asp.net-mvc – 具有引导Navbar的MVC – 将所选项目设置为活
推荐文章
站长推荐
- asp.net-core – CoreCLR中的哈希算法
- asp.net-mvc – ActionExecutingContext – Acti
- asp.net-core – 如何为asp.net vnext使用不同的
- 在ASP.NET MVC C#中使用Jquery更新部分视图
- asp.net-mvc – ASP.NET MVC提醒我旧的经典ASP意
- asp.net – Mysql中int(10)的最大大小是多少?
- asp.net-mvc-4 – Razor MVC,在哪里可以通过母版
- asp.net – 防止在文本框中键入非ascii字符
- asp.net-mvc – ASP.NET MVC是否有分页解决方案,
- asp.net http服务器推送到客户端
热点阅读
