2014-01-16 132 views
2

我有一个从Web服务获取大量JSON的函数。这些数据有时可能很大,千兆字节。我的电话看起来像这样。HttpClient.getAsync()内存不足异常

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

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

+0

我认为这不是因为它比HttpResponseMessage大,但由于您的计算机无法分配足够的内存来容纳所有数据。 –

+0

抛出异常在哪里?我希望这工作得很好,但数据的阅读成为问题 – JaredPar

回答

5

刚刚得到的数据流,并将其写入一个文件,以便您可以以后再处理它,

using (var httpClient = new HttpClient()) 
{ 
    var stream = await httpClient.GetStreamAsync(url); 
    stream.CopyToAsync(fileStream) 
}