使用 C# Httpclient 从异步 GET 获取下载进度/当前下载的字节数
本文关键字:下载 字节数 使用 Httpclient 异步 GET 获取 | 更新日期: 2023-09-27 18:31:30
我正在尝试使用System.Web.Http的httpclient在Xamarin中表示一些下载进度。我了解在典型情况下,通过 HEAD 请求提前获取文件大小并检查相关文件的内容长度。我不明白的是,如何获取当前传输的文件大小,以便我可以将其与总数进行比较。
这可能吗?我四处寻找其他示例,但它们似乎正在使用WebClient或其他类似示例。
编辑:
submitButton.Clicked += async (object sender, EventArgs e) => {
var client = new HttpClient();
var url = (Just making use of a sizable wallpaper here as example.);
var result = await client.GetStreamAsync(url);
}
如果我如上所述等待 GetStreamAsync,那么在流完成之前我无法对流执行任何操作。如果我删除 await 并尝试处理任务结果,也会发生同样的事情 - 即使尝试获取长度也不起作用,直到整个事情完成。
显然,如果我可以在写入流时获取流,我可以检查长度(希望如此)并将其与标头信息进行比较。但是如何访问中间转移,我没有得到。
不幸的是,到目前为止,我能够找到的最佳解决方案是"使用Webclient而不是httpclient"。我还没有能够在 Xamarin 中给 Webclient 一个机会,希望它能在那里工作,但我设法以直接的方式在 PC 上使用它取得了进展。