如何删除HttpClient请求头C#中的默认字符集 [英] How to remove the default charset in HttpClient Request Header C#

查看:0
本文介绍了如何删除HttpClient请求头C#中的默认字符集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试访问来自C#API代码。我无法获得响应并收到状态代码"500-内部服务器错误"。

找到请求标头中追加Charset-UTF8的原因

当我尝试在Fiddler中点击API而不使用"Charset-UTF8"时,我能够在Fiddler和Postman中得到响应。使用"Charset-UTF8"时,我得到相同的500内部服务器错误。内容类型为application/json

我甚至尝试了每种字符集编码方法UTF-8、16、32、Unicode和C#代码的默认格式,都给出了同样的错误。

请告诉我如何从API请求头中删除(追加)字符集。

请仔细阅读我附加的代码

HttpClient client1 = new HttpClient();
client1.BaseAddress = new Uri("i have third party url");
client1.DefaultRequestHeaders
    .Accept
    .Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header
        client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
            "Basic",
            Convert.ToBase64String(
                System.Text.ASCIIEncoding.ASCII.GetBytes(
                    string.Format("{0}:{1}", userName, password))));

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, client1.BaseAddress);


StringContent content = new StringContent(JsonConvert.SerializeObject("working request"));


request.Content = content;

client1.SendAsync(request)
    .ContinueWith(responseTask =>
    {
        Console.WriteLine("Response: {0}", responseTask.Result);
    });

推荐答案

尝试下面的解决方案

content.Headers.Remove("Content-Type"); // "{application/json; charset=utf-8}"
content.Headers.Add("Content-Type", "application/json");

content.Headers.ContentType.CharSet = string.Empty;

我已在dotnet/corefx回购上提交了一个问题。

查看https://github.com/dotnet/corefx/issues/25290

.NET Core 2.0,.NET Standard 2.0上测试

这篇关于如何删除HttpClient请求头C#中的默认字符集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆