HttpWebRequest的下载文件和进度条 [英] HttpWebRequest download file and progress bar

查看:1529
本文介绍了HttpWebRequest的下载文件和进度条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索网,但找不到任何方式来获得进步,同时下载文件,HttpWebRequest的。是否所有该类支持进展如何?任何一个环节,教程,提示将不胜感激。



感谢。



P.S。下面的代码...

 私有静态任务<&的HttpResponse GT; MakeAsyncRequest(字符串requestString)
{
VAR请求=(HttpWebRequest的)WebRequest.Create(requestString);
任务<&WebResponse的GT; requestTask = Task.Factory.FromAsync(
request.BeginGetResponse,
asyncResult => request.EndGetResponse(asyncResult),
NULL);
返回requestTask.ContinueWith(T => ReadStreamFromResponce(t.Result));
}

私有静态的HttpResponse ReadStreamFromResponce(WebResponse的结果)
{
变种responseobject =新的HttpResponse();
VAR响应=(HttpWebResponse)的结果;
responseobject.StatusCode =(短)response.StatusCode;

如果
返回responseobject(IsSuccess(responseobject.StatusCode)!);

使用(VAR responseStream = response.GetResponseStream())
使用(VAR毫秒=新的MemoryStream())
{
responseStream.CopyTo(毫秒);
responseobject.SetResponse(ms.ToArray());
返回responseobject;
}
}


解决方案

我'已经在过去使用此。希望它帮助。结果
使用HttpWebRequest的异步下载


I searched the net but couldn't find any way to get progress while downloading file with HttpWebRequest. Does this class support progress at all? Any link, tutorial, hint would be greatly appreciated.

Thanks.

P.S. Here's the code...

    private static Task<HttpResponse> MakeAsyncRequest(string requestString)
    {
        var request = (HttpWebRequest)WebRequest.Create(requestString);
        Task<WebResponse> requestTask = Task.Factory.FromAsync(
            request.BeginGetResponse,
            asyncResult => request.EndGetResponse(asyncResult),
            null);
        return requestTask.ContinueWith(t => ReadStreamFromResponce(t.Result));
    }

    private static HttpResponse ReadStreamFromResponce(WebResponse result)
    {
        var responseobject = new HttpResponse();
        var response = (HttpWebResponse)result;
        responseobject.StatusCode = (short)response.StatusCode;

        if (!IsSuccess(responseobject.StatusCode))
            return responseobject;

        using (var responseStream = response.GetResponseStream())
        using (var ms = new MemoryStream())
        {
            responseStream.CopyTo(ms);
            responseobject.SetResponse(ms.ToArray());
            return responseobject;
        }
    }

解决方案

I've used this in the past. Hope it helps.
Using HttpWebRequest for Asynchronous Downloads

这篇关于HttpWebRequest的下载文件和进度条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆