C# HttpResponse';s内容';s长度不为';与纯文本不匹配

C# HttpResponse';s内容';s长度不为';与纯文本不匹配,c#,httpresponsemessage,C#,Httpresponsemessage,我正在使用HttpRequestMessage/HttpResponseMessage发出post请求。一切正常,我将响应转换成一个字符串,其长度如预期的那样正确,但是如果我想显示原始字符串,它只返回一个问号字符(?),其他什么都不返回,就好像输出的长度只有一/两个字符一样 我试着将字符串解码为UTF8,仍然是一样的 这是我的密码: var targetUrl=新Uri(“https://www.targetUrl.com/"); var postData=GetPostData; var re

我正在使用HttpRequestMessage/HttpResponseMessage发出post请求。一切正常,我将响应转换成一个字符串,其长度如预期的那样正确,但是如果我想显示原始字符串,它只返回一个问号字符(?),其他什么都不返回,就好像输出的长度只有一/两个字符一样

我试着将字符串解码为UTF8,仍然是一样的

这是我的密码:

var targetUrl=新Uri(“https://www.targetUrl.com/");
var postData=GetPostData;
var request=httpClientHelp.GetRequest(HttpMethod.Post、targetUrl、postData);
var response=等待httpRequestProcess.SendAsync(请求);
var data=Await response.Content.ReadAsStringAsync();
Debug.WriteLine(data.Length);//正确,即5686
Debug.WriteLine(数据);//只显示“?”
//。以下是httpRequestProcess类中的SendAsync函数:

公共异步任务SendAsync(HttpRequestMessage requestMessage) { var response=await Client.sendsync(requestMessage); 返回响应; }


如果复制该问号,则输出为多组未知字符,例如:� �

多亏@SachinVishwakarma,我才得以解决这个问题。标头上的默认编码是“gzip,deflate,br”,如Fiddler中所示。我所要做的就是用HttpClientHandler初始化HttpClient,HttpClientHandler的AutomaticDecompression属性针对所有压缩方法进行了优化

例如:

var\u httpHandler=new HttpClientHandler(){CookieContainer=new System.Net.CookieContainer(),AutomaticDecompression=System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.None};
var _httpClient=新的httpClient(_httpHandler);

谢谢你们帮助我

尝试使用
Convert.FromBase64String(数据)它不起作用,阿南特。它弄乱了字符串并抛出异常。它是一个非常长的字符串。字符串的长度与我预期的响应相匹配。我认为这正是Fiddler在解码响应之前显示的结果:但是我如何像Fiddler那样解码它呢?这是什么类型的编码?@SachinVishwakarma我解决了这个问题。将立即更新我的线程。