HttpResponse 的内容长度与纯文本不匹配
HttpResponse's content's length doesn't match the plain text
我正在向 HttpRequestMessage/HttpResponseMessage 发出 post 请求。一切正常,我正在将响应放入一个长度与预期一致的字符串中,但是如果我想显示原始字符串,它只是 returns 一个问号字符 (?),没有别的,就好像输出只有 one/two 个字符长度。
我试过把字符串解码成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 class:
的 SendAsync 函数
public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage requestMessage)
{
var response = await Client.SendAsync(requestMessage);
return response;
}
Here is the raw string result
Here is the difference between the string content and its length
如果我复制那个问号,输出是一组多组未知字符,例如:� �
感谢@SachinVishwakarma 我能够解决这个问题。 header 上的默认编码是 "gzip, deflate, br",如 Fiddler 中所示。我所要做的就是使用 HttpClientHandler 初始化 HttpClient,其 AutomaticDecompression 属性 针对所有压缩方法进行了优化。
示例:
var _httpHandler = new HttpClientHandler() { CookieContainer = new System.Net.CookieContainer(), AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.None };
var _httpClient = new HttpClient(_httpHandler);
谢谢大家帮助我!
我正在向 HttpRequestMessage/HttpResponseMessage 发出 post 请求。一切正常,我正在将响应放入一个长度与预期一致的字符串中,但是如果我想显示原始字符串,它只是 returns 一个问号字符 (?),没有别的,就好像输出只有 one/two 个字符长度。
我试过把字符串解码成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 class:
的 SendAsync 函数public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage requestMessage)
{
var response = await Client.SendAsync(requestMessage);
return response;
}
Here is the raw string result
Here is the difference between the string content and its length
如果我复制那个问号,输出是一组多组未知字符,例如:� �
感谢@SachinVishwakarma 我能够解决这个问题。 header 上的默认编码是 "gzip, deflate, br",如 Fiddler 中所示。我所要做的就是使用 HttpClientHandler 初始化 HttpClient,其 AutomaticDecompression 属性 针对所有压缩方法进行了优化。
示例:
var _httpHandler = new HttpClientHandler() { CookieContainer = new System.Net.CookieContainer(), AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.None };
var _httpClient = new HttpClient(_httpHandler);
谢谢大家帮助我!