网上下载和上传数据 http://www.cnblogs.com/wayne-ivan/archive/2007/05/23/756384.html

转载 2007年09月18日 16:31:00
有时候,处于程序的需要,程序要求动态的从网络上更新数据,最常见的比如从数据中心下载或上传企业内部数据或者资料;有时候,想做一些类似机器人的工作,让程序自动获取IntraNet亦或InterNet上的资源,可能是新闻、图片、以及你想得到的……这个时候就需要编一些小程序。

       今天我主要介绍一下在.NET中如何获取网络上的数据,当然可以是局域网,甚至Local 文件系统。利用WebClient类,易如反掌!



关于WebClient:

       在MSDN中,这样描述WebClient类:

       “提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法”,  默认情况下,.NET 框架支持以 http:、https: 和 file: 方案标识符开头的 URI。是不是封装了很多我们想要实现的过程?呵呵。看一下它的主要成员:

成员        类型    描述
BaseURI        属性    当前的URL地址
DownloadData    方法    从一个URI下载数据,以字节数组的形式返回
DownloadFile    方法    从一个URI下载数据,保存为本地文件
OpenRead             方法    以流的形式打开并执行读操作
OpenWrite             方法    打开一个流用于向URI写数据
UploadData    方法    向URI上传数据
UploadFile    方法    把一个本地文件上载到制定URI
UploadValues    方法    NameValueCollection 发送到资源并返回包含任何响应的字节数组

具体看一下如何下载文件或数据:

WebClient提供了大概三种方式从网上下载数据:

1.  DownloadData

从资源下载数据并返回字节数组。

              Public Function DownloadData( ByVal address As String ) As Byte()
接受一个参数,address是从中下载数据的 URI。注意返回的是一个字节数组,我在以前的文章中提到过很多次,我们可以很简单的转换为我们需要的格式。
       看一个代码:
       Dim wc As New System.Net.WebClient() ‘跟网络相关的类一般都在System.Net下
Dim html As String = Encoding.ASCII.GetString(wc.DownloadData("http:www.csdn.net"))
Debug.WriteLine(html)
你就会得到很长的一个String,实际上就是CSDN第一页的源代码。

2.

       DownloadFile

       从具有指定 URI 的资源将数据下载到本地文件

Public Sub DownloadFile( ByVal address As String, ByVal fileName As String )
       address :从中下载数据的 URI。

FileName :要接收数据的本地文件的名称。

使用也很简单:
        Dim wc As New System.Net.WebClient()
wc.DownloadFile("http://www.csdn.net/images/ad/vsnet_120.gif","c:/test.gif")
成功运行后,本地机的C:/会多出一个小图片,就是VS.NET 4CD的广告。

3.  OpenRead

为从具有指定 URI 的资源下载的数据打开一个可读的流。

Public Function OpenRead(ByVal address As String ) As Stream

参数

address 从中下载数据的 URI。

流的概念熟悉吗?不熟的话看一下我以前的文章吧,很基本的操作都有。

下面的示例打开由 uriString 标识的资源并将结果显示在系统控制台上。请注意,由 OpenRead 返回的 Stream 在读取完数据之后将被关闭。


Dim myWebClient As New System.Net.WebClient()
Dim uriString As String="http://www.csdn.net"
Console.WriteLine("Accessing {0} ...", uriString)
Dim myStream As Stream = myWebClient.OpenRead(uriString)
Console.WriteLine(ControlChars.Cr + "Displaying Data :" + ControlChars.Cr)
Dim sr As New StreamReader(myStream)
Console.WriteLine(sr.ReadToEnd())
myStream.Close()

上传数据
        有下载必然有上传,同样对应的WebClient也有很多中上传数据的方法,除了跟上面对应的UploadData、UploadFile、OpenWrite外还有一种UploadValues,UploadValues将NameValueCollection 发送到资源并返回包含任何响应的字节数组,可以用于那些有表单的网页。
        例子就不写了,MSDN中ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemnetwebclientclasstopic.htm都有详细的介绍,在此不再赘述。

总结:
    简单介绍了WebClient的主要方法和应用,实际上WebClient可以完成一些比较简单的操作,试想,如果服务器要求我们输入密码和用户名才能访问怎么办?或者其他的编程细节要处理?那就是我们下次介绍的WebRequest 和 WebResponse。
 

相关文章推荐

JQuery上传插件Uploadify使用详解 http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示...

http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html

提到依赖注入,大家都会想到老马那篇经典的文章。其实,本文就是相当于对那篇文章的解读。...

Visual Studio 2008 单元测试(转自:http://www.cnblogs.com/TerryFeng/archive/2009/05/24/1488333.html)

开发组件的时候使用VS集成的单元测试功能会很方便   1.新建一个类库项目,并为其中的类添加一个方法,方法任意 之后右键点击代码窗口 选择方法 ...
  • lslxdx
  • lslxdx
  • 2011年07月29日 20:55
  • 599

标准C++中的string类的用法总结----------http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html

标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC...

分享15款很棒的 JavaScript 开发工具(转http://www.cnblogs.com/lhb25/archive/2011/05/11/2040071.html)

分享15款很棒的 JavaScript 开发工具  在开发中,借助得力的工具可以事半功倍。今天,这篇文章向大家分享最新收集的15款非常有用的 JavaScript 开发工具。TestSwarm: Co...
  • fjfdszj
  • fjfdszj
  • 2011年05月11日 16:33
  • 911

http://www.cnblogs.com/zxp_9527/archive/2009/05/07/1452253.html

原文网址:http://www.cnblogs.com/zxp_9527/archive/2009/05/07/1452253.html encodeURL() vs encodeRedirectUR...

http://www.cnblogs.com/menlsh/archive/2013/05/19/3087810.html

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式。    在上一篇博文《An...

jQuery Ajax 实例 全解析http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html

jQuery Ajax 实例 全解析 jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯...
  • zhqzou
  • zhqzou
  • 2012年03月27日 13:26
  • 1020

正则表达式备忘-----------转载自http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html

(1)“@”符号 符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例...
  • ChollLi
  • ChollLi
  • 2011年12月25日 22:45
  • 197

asp.net 返回上一页的实现方法小集(转)(http://www.cnblogs.com/liping19851014/archive/2007/07/14/818173.html)

返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改时用的,或者是因为网站为了方便浏览者而有心添加的一个东东,一般这种功能的实现在ASP.net中都是用一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网上下载和上传数据 http://www.cnblogs.com/wayne-ivan/archive/2007/05/23/756384.html
举报原因:
原因补充:

(最多只允许输入30个字)