HttpClient.getAsync()内存不足异常

use*_*736 2 c# json out-of-memory dotnet-httpclient

我有一个从Web服务获取大量JSON的函数.这个数据有时可能很大,千兆字节.我的电话看起来像这样.

        try
        {
            using (var httpClient = NewHttpClient())
            {
                var response = httpClient.GetAsync(endpoint).Result;
                return response;
            }
        }
        catch(Exception ex)
        {
            //Do Stuff
        }
Run Code Online (Sandbox Code Playgroud)

当数据很大时,会抛出内存不足异常.我相信这是因为响应消息实际上比HttpResponseMessage允许它更大.有没有办法在一段时间内只得到一些消息?我确信它以前已经完成,但我无法找到谷歌和/或斜杠的任何东西.提前感谢您的建议.

L.B*_*L.B 6

只需获取流并将其写入文件,以便稍后处理,

using (var httpClient = new HttpClient())
{
    var stream = await httpClient.GetStreamAsync(url);
    stream.CopyToAsync(fileStream)
}
Run Code Online (Sandbox Code Playgroud)

  • 或者更好的是,使用带有 **HttpCompletionOption** 参数的 GetAsync() 重载: ```var response = wait client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)``` (3认同)