我有一个规范,其中需要忽略HTTPS证书并获取上传/下载的状态。
我使用HttpClient忽略证书,但我找不到获取下载/上传状态的方法。
我知道它存在于WebClient Windows Phone 8和Windows 1.1中没有Webclient。
所以请指导我完成这两件事。
答案 0 :(得分:1)
对于下载进度,您可以从Http请求返回响应流,并可以使用以下代码写入文件,该文件也显示进度状态
IInputStream inputStream = null;
IRandomAccessStream fs = null;
try
{
inputStream = responseStream.AsInputStream();
ulong totalBytesRead = 0;
fs = await file.OpenAsync(FileAccessMode.ReadWrite);
ulong fileSize = Convert.ToUInt64(Size);
while (true)
{
// Read from the web.
if (!cancellationToken.IsCancellationRequested)
{
IBuffer buffer = new Windows.Storage.Streams.Buffer(512);
buffer = await inputStream.ReadAsync(
buffer,
buffer.Capacity,
InputStreamOptions.None);
if (buffer.Length == 0)
{
// There is nothing else to read.
break;
}
// Report progress.
totalBytesRead += buffer.Length;
double progress = ((double)totalBytesRead / fileSize);
double Value = progress * 100;
System.Diagnostics.Debug.WriteLine("Bytes read: {0}", totalBytesRead);
await fs.WriteAsync(buffer);
}
else
{
inputStream.Dispose();
fs.Dispose();
await file.DeleteAsync();
break;
}
}
inputStream.Dispose();
fs.Dispose();
}
catch
{
}
对于上传进度,没有内置支持来执行此操作,但您可以使用 在System.Net.Http.Handler中找到ProgressMessageHandler ,您可以在Nuget上找到它,然后将其挂钩到您的HttpClient对象。