var request = new HttpRequestMessage(HttpMethod.Get, $"api/Items");
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
using (var response = await _httpClient.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var stream = await response.Content.ReadAsStreamAsync();
using (var streamReader = new StreamReader(stream))
{
using (var jsonTextReader = new JsonTextReader(streamReader))
{
var jsonSerializer = new JsonSerializer();
var data = jsonSerializer.Deserialize<Item>(jsonTextReader);
}
}
}..。
var request = new HttpRequestMessage(HttpMethod.Get, "api/Items");
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await _httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<List<Item>>(content);我已经运行了这两个例子,我很好奇它们之间的区别是什么,它们总是得到相同的结果,ReadAsStreamAsync比ReadAsStringAsync快得多。
发布于 2021-08-31 21:30:00
在幕后,HttpClient将内容存储在MemoryStream中。因此,基本上调用ReadAsStreamAsync只是返回对流的引用。在调用ReadAsStringAsync的情况下,会在内存流上调用ToArray方法,因此会创建一个额外的数据副本。
发布于 2020-06-25 04:42:42
您可以检查ReadAsStreamAsync和ReadAsStringAsync的描述
简而言之,你可以发送请求内容,而不仅仅是字符串。在这里ReadAsStreamAsync是你唯一的选择。如果您的响应内容是字符串-您可以同时使用这两种方法。但是Stream在任何时候都更快。
This很好地解释了这些情况下的内存分配和性能管理。
https://stackoverflow.com/questions/62563636
复制相似问题