HttpResponse 的内容长度与纯文本不匹配

我正在使用 HttpRequestMessage/HttpResponseMessage 发出发布请求。一切都很好,我将响应放入一个长度符合预期的正确字符串中,但如果我想显示原始字符串,它只返回一个问号字符(?)而没有其他内容,就好像输出只是一/两个字符的长度。


我尝试将字符串解码为UTF8,仍然一样。


这是我的代码:


var targetUrl = new Uri("https://www.targetUrl.com/");

var postData = GetPostData;

var request = httpClientHelp.GetRequest(HttpMethod.Post, targetUrl, postData);

var response = Await httpRequestProcess.SendAsync(request);

var data = Await response.Content.ReadAsStringAsync();

Debug.WriteLine(data.Length); // Correct, i.e. 5686

Debug.WriteLine(data); // Just displays "?"

//。以下是 httpRequestProcess 类中的 SendAsync 函数:


public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage requestMessage)

{

    var response = await Client.SendAsync(requestMessage);

    return response;

}


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


函数式编程
浏览 127回答 1
1回答

元芳怎么了

标头的默认编码是“gzip、deflate、br”,如 Fiddler 中所示。我所要做的就是使用 HttpClientHandler 初始化 HttpClient,该 HttpClientHandler 的 AutomaticDecompression 属性针对所有压缩方法进行了优化。例子:&nbsp; &nbsp; var _httpHandler = new HttpClientHandler() { CookieContainer = new System.Net.CookieContainer(), AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.None };&nbsp; &nbsp; var _httpClient = new HttpClient(_httpHandler);谢谢你们帮助我!
打开App,查看更多内容
随时随地看视频慕课网APP