如何使用触发 DownloadProgressChanged 的大响应发出异步 POST 请求?
How to make an async POST request with a big response that fires DownloadProgressChanged?
我正在使用 WebClient
class 与只有一个端点 URL 的服务器交互,而是接受路径作为 POSTed 值,在 JSON(这并不重要)。
使用 UploadStringTaskAsync
,我可以异步发出此类请求并读取它们的响应。但是,现在我面临着从该服务器下载文件的必要条件。这是一个相当大的文件(高达数百兆字节),因此我的程序界面上应该有一个进度指示。但是 UploadStringTaskAsync
不会触发 DownloadProgressChanged
事件,因此,我无法访问已下载的字节数。
我怎样才能收到这个文件,并且能够收到进度通知?或者是否有任何其他 class 我可以使用它允许我做 POST 请求并得到巨大的响应?
首先想到的是将下载作为流打开,编写自己的复制循环并从那里进行进度报告。这保证有效。
WebClient 似乎不足以满足这一要求。 WebClient 包装了 HttpWebRequest,因此只需使用它即可。或者使用更现代的 HttpClient。这两个保证支持获取流(实际上是流)。
我正在使用 WebClient
class 与只有一个端点 URL 的服务器交互,而是接受路径作为 POSTed 值,在 JSON(这并不重要)。
使用 UploadStringTaskAsync
,我可以异步发出此类请求并读取它们的响应。但是,现在我面临着从该服务器下载文件的必要条件。这是一个相当大的文件(高达数百兆字节),因此我的程序界面上应该有一个进度指示。但是 UploadStringTaskAsync
不会触发 DownloadProgressChanged
事件,因此,我无法访问已下载的字节数。
我怎样才能收到这个文件,并且能够收到进度通知?或者是否有任何其他 class 我可以使用它允许我做 POST 请求并得到巨大的响应?
首先想到的是将下载作为流打开,编写自己的复制循环并从那里进行进度报告。这保证有效。
WebClient 似乎不足以满足这一要求。 WebClient 包装了 HttpWebRequest,因此只需使用它即可。或者使用更现代的 HttpClient。这两个保证支持获取流(实际上是流)。