我正在尝试使用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并尝试使用Task结果,则会发生同样的事情 - 即使尝试获取长度也无法工作,直到完成整个事情。
显然,如果我可以在写入流时到达流,我可以检查长度(希望如此)并将其与头信息进行比较。但是如何访问中间转移,我没有。
答案 0 :(得分:0)
不幸的是,到目前为止,我能够找到的最佳解决方案是使用Webclient代替httpclient"。我还没有能够在Xamarin中给Webclient一个机会,希望它可以在那里工作,但我设法在PC上以直接的方式使用它。