如何发出一个带有大响应的异步POST请求,以激发DownloadProgressChanged

本文关键字:请求 POST 异步 DownloadProgressChanged 响应 何发出 一个 | 更新日期: 2023-09-27 18:29:56

我使用WebClient类与一个只有一个端点URL的服务器交互,而在JSON中接受路径作为POSTed值(这并不重要)。

使用UploadStringTaskAsync,我可以异步地发出这样的请求并读取它们的响应。然而,现在我面临着从服务器下载文件的必要条件。这是一个相当大的文件(高达数百兆字节),所以我的程序界面上应该有进度指示。但是,UploadStringTaskAsync不会激发DownloadProgressChanged事件,因此,我无法访问已下载的字节数。

如何接收此文件,并能够收到进度通知?或者,我是否可以使用其他类来进行具有巨大响应的POST请求?

如何发出一个带有大响应的异步POST请求,以激发DownloadProgressChanged

首先想到的是将下载作为流打开,编写自己的复制循环,并从中进行进度报告。这是有保证的。

WebClient似乎不足以做到这一点。WebClient包装HttpWebRequest,所以只需使用它。或者使用更现代的HttpClient。这两者保证支持获得流(实际上是流)。