代码之家  ›  专栏  ›  技术社区  ›  Sascha

使用进程从HttpWebRequest响应流反序列化JSON

  •  0
  • Sascha  · 技术社区  · 6 年前

    我使用HttpWebRequest下载大量数据。按照建议 on their website 我将响应流直接传递给JsonSerializer.Deserialize方法。

    现在我想报告下载过程中的进度。网络上有足够的资源 like this one 这说明了怎么做。

    我的第二个想法(我还没有尝试过)是从响应流中读取数据块以报告进度,并将这些数据块写入MemoryStream。然后将MemoryStream倒回到反序列化方法。那个 能够 工作,但我最终会在内存中存储完整的数据,这样性能就会如所述得到提高 here

    如果有人能给我一些解决这个问题的提示,我会很高兴的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bradley Grainger    6 年前

    创建的实现 Stream (让我们称之为 ProgressStream )这就包袱了 HttpWebResponse 川流不息 Read 请求,同时跟踪已读取的总字节数。那就传过去 实例 Deserialize .

    反序列化 方法将调用 阅读 Content-Length 对于响应,您可以计算下载的百分比。

    下面是一个示例实现: https://erictummers.com/2011/02/15/upload-progress-in-wcf/

    https://github.com/aspnet/AspNetWebStack/blob/master/src/System.Net.Http.Formatting/Handlers/ProgressStream.cs

    http://mel-green.com/2010/01/progressstream/