编程浪子的博客

碌碌无为终为过

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用System.Net.WebClient类可以从特定的URI请求文件。System.Net.WebClient是一个非常高级的类,它用简单的命令就能实现一些基本操作。下面通过几个实验,说明怎样使用这个类从下载和上传数据。

 

1、下载文件

使用WebClient类下载文件有两种方法,具体使用哪一种方法取决于文件内容的处理方式。如果需要把文件存储到文件系统上,需要使用DownloadFile()方法,这个方法有两个参数:文件的URI和保存文件的路径:

1:  WebClient client = new WebClient();
2:  client.DownloadFile("http://localhost:90/","d:\\123.txt");
 

如果应用程序需要处理从Web获取的数据,可以使用OpenRead方法。这个方法返回一个Stream引用。使用时可以将这些数据从数据流中提取到内存中直接使用:

1:  WebClient client = new WebClient();
2:  Stream strm = client.OpenRead(http://localhost:90/);
 

WebClient类还有一个OpenWrite()方法,它可以返回一个可写的数据流。别于用户把数据发给URI。这个方法也可以指定把数据发送给主机的方法:Post、Get、PUT等。下边这段代码演示了在网站根目录下创建文件file.txt,并将字符串“Hello World”写入该文件:

1:  WebClient client = new WebClient();
2:  Stream stream = client.OpenWrite("http://localhost:90/", "PUT");
3:  StreamWriter sw = new StreamWriter(stream);
4:  sw.WriteLine("Hello World!");
5:  sw.Close();

2、上传文件

WebClient类提供了UploadFile()和UploadData()方法。在需要投递HTML窗体或上传整个文件时,就可以使用这两个方法。UploadFile()方法把文件上传到指定的位置。UploadData()方法把作为字节数组提供的二进制数据上传至指定的URI,如下所示:

1:  WebClient client = new WebClient();
2:  client.UploadFile("http://localhost:90/", "d:\\123.txt");
3:  
4:  FileStream fs = new FileStream("d:\\123..jpg",FileMode.Open);
5:  byte[] image = new byte[fs.Length];
6:  fs.Read(image,0,(int)fs.Length);
7:  client.UploadData("http://localhost:90/image.jpg", image);

3、使用限制

使用WebClient类有一些功能限制:这个类不能提供身份验证证书,这样在上传数据是就会出现一些问题。大多数站点是不会接收没有身份验证的上传文件的。

尽管可以给请求添加标题信息并检查相应中的标题信息,但这仅仅限制与一般意义上的检查。

这是由于WebClient类是非常一般的类,可以使用任意协议发送和接收响应。他不能处理特定于任何协议的任何特性,例如Cookie等。如果需要使用这些特性,需要使用.net中的WebResponse和WebRequest类。

为基础的一系列类。

Technorati 标签: WebClient
posted on 2011-03-26 21:38  编程浪子_  阅读(5407)  评论(2编辑  收藏  举报