WebClient方法示例下载远程数据
2010-04-09 17:44
337 查看
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 的基类实现,以确保派生类按预期方式工作。
实现源码为:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace wiindowsFormsApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.Text = @"http://dl-sh-ocn-1.pchome.net/0d/bx/koomail50b8.rar";
}
WebClient webClient = new WebClient();
private void btn_down_Click(object sender, EventArgs e)
{
if (webClient.IsBusy)//是否存在正在进行中的Web请求
{
webClient.CancelAsync();
}
//为webClient添加事件
webClient.DownloadProgressChanged +=new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.DownloadFileCompleted+=new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
//开始下载
webClient.DownloadFileAsync(new Uri(this.textBox1.Text), "aa.rar");
}
private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.lbl_pro.Text = e.ProgressPercentage.ToString() + "%";
this.lbl_detail.Text = string.Format("正在下载文件,完成进度{0}/{1}(字节)"
,e.BytesReceived
,e.TotalBytesToReceive);
}
private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
MessageBox.Show("下载被取消!");
else
MessageBox.Show("下载完成!");
}
private void btn_cancel_Click(object sender, EventArgs e)
{
this.webClient.CancelAsync();
this.webClient.Dispose();
}
}
}
简单介绍一下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 的基类实现,以确保派生类按预期方式工作。
实现源码为:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
namespace wiindowsFormsApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.Text = @"http://dl-sh-ocn-1.pchome.net/0d/bx/koomail50b8.rar";
}
WebClient webClient = new WebClient();
private void btn_down_Click(object sender, EventArgs e)
{
if (webClient.IsBusy)//是否存在正在进行中的Web请求
{
webClient.CancelAsync();
}
//为webClient添加事件
webClient.DownloadProgressChanged +=new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
webClient.DownloadFileCompleted+=new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
//开始下载
webClient.DownloadFileAsync(new Uri(this.textBox1.Text), "aa.rar");
}
private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.lbl_pro.Text = e.ProgressPercentage.ToString() + "%";
this.lbl_detail.Text = string.Format("正在下载文件,完成进度{0}/{1}(字节)"
,e.BytesReceived
,e.TotalBytesToReceive);
}
private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
MessageBox.Show("下载被取消!");
else
MessageBox.Show("下载完成!");
}
private void btn_cancel_Click(object sender, EventArgs e)
{
this.webClient.CancelAsync();
this.webClient.Dispose();
}
}
}
相关文章推荐
- 详细介绍ASP.NET中WebClient方法示例下载远程数据
- FIREDAC调用中间件远程方法查询数据示例
- node.js读取Excel数据(下载图片)的方法示例
- Python下载网络文本数据到本地内存的四种实现方法示例
- 一个使用WebClient和WebApi上传下载数据的方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- PHP远程下载大文件方法,防止内存溢出
- AngularJS实现自定义指令与控制器数据交互的方法示例
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- php实现远程网络文件下载到服务器指定目录(方法一)
- (二)线程--通过委托异步调用方法(示例下载)
- JavaScript实现读取与输出XML文件数据的方法示例
- SpringMVC(27):json数据的传递处理的示例(实现功能:使用jQuery框架的ajax()方法实现用户信息查看)
- 从性能方面考虑PHP下载远程文件的3种方法
- [导入]AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- Android Studio使用远程依赖时下载不了jar包的解决方法
- RMI远程方法调用完整示例【java项目】
- python模块paramiko的上传下载和远程执行命令方法
- datagrid数据导出到excel文件给客户端下载的几种方法