【引用】WebClient下载数据

Net2.0中新增了很多组件,WebClient就是其中一个,功能也很强大,今天拿WebClient做了一个小实验,只用到了一些很简单的功能就可以实现以前不好实现的功能,很方便。

简单介绍一下WebClient:
    WebClient
类提供向
URI 标识的任何本地、Intranet

Internet 资源发送数据以及从这些资源接收数据的公共方法。
    WebClient
类使用
WebRequest 类提供对资源的访问。WebClient
实例可以通过任何已向
WebRequest.RegisterPrefix 方法注册的
WebRequest 子代访问数据。
    注意
    默认情况下,.NET
Framework 支持以
http:、https:、ftp:、和
file: 方案标识符开头的
URI。

下面描述用于将数据上载到资源的
WebClient 方法: 
    OpenWrite  检索一个用于将数据发送到资源的
Stream。
    OpenWriteAsync  检索
Stream,它在不阻止调用线程的情况下将数据发送到资源。
    UploadData  将字节数组发送到资源,并返回包含任何响应的
Byte 数组。
    UploadDataAsync  在不阻止调用线程的情况下,将
Byte 数组发送到资源。
    UploadFile  将本地文件发送到资源,并返回包含任何响应的
Byte 数组。
    UploadFileAsync  在不阻止调用线程的情况下,将本地文件发送到资源。
    UploadValues  将
NameValueCollection 发送到资源,并返回包含任何响应的
Byte 数组。
    UploadValuesAsync  在不阻止调用线程的情况下,将
NameValueCollection 发送到资源,并返回包含任何响应的
Byte 数组。
    UploadString  在不阻止调用线程的情况下,将
String 发送到资源。
    UploadStringAsync  在不阻止调用线程的情况下,将
String 发送到资源。

下面描述从资源下载数据的
WebClient 方法: 
    OpenRead  从资源以
Stream 的形式返回数据。
    OpenReadAsync  在不阻止调用线程的情况下,从资源返回数据。
    DownloadData 从资源下载数据并返回
Byte 数组。
    DownloadDataAsync  在不阻止调用线程的情况下,从资源下载数据并返回
Byte 数组。
    DownloadFile  从资源将数据下载到本地文件。
    DownloadFileAsync  在不阻止调用线程的情况下,将数据从资源下载到本地文件。
    DownloadString  从资源下载
String 并返回
String。
    DownloadStringAsync  在不阻止调用线程的情况下,从资源下载
String。

您可以使用
CancelAsync 方法取消尚未完成的异步操作。
    默认情况下,WebClient
实例不发送可选的
HTTP 报头。如果您的请求需要可选报头,必须将该报头添加到
Headers 集合。例如,要在响应中保留查询,必须添加用户代理报头。此外,如果用户代理标头丢失,服务器可能返回
500(内部服务器错误)。
    在
WebClient 实例中,AllowAutoRedirect
设置为
true。
    给继承者的说明
派生类应调用
WebClient 的基类实现,以确保派生类按预期方式工作。

实现源码为:

1.   
using System;

2.   
using System.Collections.Generic;

3.   
using System.ComponentModel;

4.   
using System.Data;

5.   
using System.Drawing;

6.   
using System.Text;

7.   
using System.Windows.Forms;

8.   
using System.Net;

9.   
using System.IO;

10.

11. 
namespace wiindowsFormsApplication

12. 
{

13. 
    public partial class Form1 : Form

14. 
    {

15. 
        public Form1()

16. 
        {

17. 
            InitializeComponent();

18. 
            this.textBox1.Text = @"http://dl-sh-ocn-1.pchome.net/0d/bx/koomail50b8.rar";

19. 
        }

20.

21. 
        WebClient webClient = new WebClient();

22. 
        private void btn_down_Click(object sender, EventArgs e)

23. 
        {

24.

25. 
            if (webClient.IsBusy)//是否存在正在进行中的Web请求

26. 
            {

27. 
                webClient.CancelAsync();

28. 
            }

29. 
            //为webClient添加事件

30. 
            webClient.DownloadProgressChanged +=new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);

31. 
            webClient.DownloadFileCompleted+=new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);

32. 
            //开始下载

33. 
            webClient.DownloadFileAsync(new Uri(this.textBox1.Text), "aa.rar");

34. 
        }

35.

36. 
        private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)

37. 
        {

38. 
            this.progressBar1.Value = e.ProgressPercentage;

39. 
            this.lbl_pro.Text = e.ProgressPercentage.ToString() + "%";

40. 
            this.lbl_detail.Text = string.Format("正在下载文件,完成进度{0}/{1}(字节)"

41. 
                                ,e.BytesReceived

42. 
                                ,e.TotalBytesToReceive);

43. 
        }

44.

45. 
        private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)

46. 
        {

47. 
            if (e.Cancelled)

48. 
                MessageBox.Show("下载被取消!");

49. 
            else

50. 
                MessageBox.Show("下载完成!");

51. 
        }

52.

53. 
        private void btn_cancel_Click(object sender, EventArgs e)

54. 
        {

55. 
            this.webClient.CancelAsync();

56. 
            this.webClient.Dispose();

57. 
        }

58. 
    }

59. 
}

运行界面:

时间: 2024-11-02 18:19:03

【引用】WebClient下载数据的相关文章

Excel VBA宏 链接服务器 上传和下载数据

首先说明以下. 第一: 下面的 “ _" 也就是 空格下划线 在VBA中表示换行的意思:& 表示链接连个字符串的操作,注意 & 的前后是否需要空格 第二: 如果链接服务器,服务器名称,账号,密码,或者SQL语句有问题,都会报错说自动化错误. 第三: 如果刚开始运行程序就显示”未定义对象错误“,那么你就需要 VBA界面的”工程--引用“中选择”Micsoft ActiveX data Objects 2.6“ 点击确定. 1 Sub 下载数据() 2 3 Dim lastRow A

ASIHTTPRequest下载数据

本文为大家介绍了iOS开发ASIHTTPRequest下载数据的内容,其中包括设定将服务器响应数据直接下载到文件,处理收到的服务器响应数据,PUT请求.获取HTTP状态码,读取响应头,处理文本编码,处理重定向等等内容. 将服务器响应数据直接下载到文件 如果你请求的资源很大,你可以直接将数据下载到文件中来节省内存.此时,ASIHTTPRequest将不会一次将返回数据全部保持在内存中. 当我们把数据下载到downloadDestinationPath时,数据将首先被存在临时文件中.此时文件的路径名

第 16 章 下载数据

在本章中,我们将从网上下载数据,并对这些数据进行可视化.网上的数据多的难以置信,且大多未经过仔细检查.如果能够对这些数据进行分析,我们就能够发现别人没有发现的规律和关联. 我们将访问并可视化以两种常见格式存储的数据:CSV和JSON.我们将使用Python模块csv来处理CSV格式存储的天气数据,找出两个不同地区在一段时间内的最高温度和最低温度.然后,我们将使用matplotlib根据下载的数据创建一个图表,展示两个不同地区的气温变化:阿拉斯加和加利福尼亚死亡谷.在本章的后面,我们将使用模块js

SecureCRT学习之道:用SecureCRT来上传和下载数据

今天才知道,原来SecureCRT可以使用linux下的zmodem协议来快速的传送文件,而且还使用非常方便哦,我还傻傻的找其他软件来sftp,笨死了:(你只要设置一下上传和下载的默认目录就行options-->session options-->file transfer 下可以设置上传和下载的目录剩下的你只要在用SecureCRT登陆linux终端的时候:发送文件到客户端:sz filenamezmodem接收可以自行启动. 从客户端上传文件到linux服务端:只要服务端执行,rz然后在

[转]ionic项目之上传下载数据

本文转自:http://blog.csdn.net/superjunjin/article/details/44158567 一,首先是上传数据 记得在angularjs的controller中注入$http依赖 [javascript] view plaincopyprint? var data = {id: $scope.task_id, groupId: $scope.task_groupid, importance: $scope.priority_level, classname:$s

使用cmd命令行方式登录ftp上传下载数据

部分用户在使用ftp工具登录空间上传下载过程中经常会遇到各种问题,如主动模式,被动模式,以及其他导致无法登陆ftp .上传数据.下载数据的问题,这时候不妨使用一下命令行方式.命令行下可以避免很多由于ftp工具配置导致的问题,而且这种方式下下载数据的速率明显比使用ftp工具更快.下面就来看一下如何使用ftp 命令进行简单的上传下载数据.1.登录ftp在“开始”->”运行”中输入“cmd”,进入cmd命令行模式,接下来输入:ftp 118.193.22.151输入自己的网站ip地址,接下来会提示输入

使用post请求下载数据

//下载数据 -(void)requestData { NSURL *url = [NSURL URLWithString:kVerify]; //转码 //urlStr= [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod =

C#控制台基础 正则表达式,regex,webclient下载博客园网页中的一张图片

1 网页图 这网页就一张图片,新手入门,找个简单一些的. 2 代码 1 正则表达式,regex,webclient下载博客园网页中的一张图片 2 3 4 using System; 5 using System.Collections.Generic; 6 using System.IO; 7 using System.Linq; 8 using System.Net; 9 using System.Text; 10 using System.Text.RegularExpressions; 1

windows使用python调用wget批处理下载数据

wget是linux/unix下通常使用的下载http/ftp的数据,使用非常方便,其实wget目前经过编译,也可在windows下使用.最近需要下载大量的遥感数据,使用了python写了批处理下载程序,使用的是urllib的urlretrieve进行下载,数据下载还可以,但是界面交互性不好看.就根据自己在linux下载数据进行了改进. 1. wget在windows下的安装: 从网站下载wget for windows工具(http://gnuwin32.sourceforge.net/pac