网上下载和上传数据(一) Montaque(原作)

网上下载和上传数据(一)    Montaque(原作)  

有时候,处于程序的需要,程序要求动态的从网络上更新数据,最常见的比如从数据中心下载或上传企业内部数据或者资料;有时候,想做一些类似机器人的工作,让程序自动获取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。
<

时间: 2024-08-03 17:45:56

网上下载和上传数据(一) Montaque(原作)的相关文章

网上下载和上传数据(二) Montaque(原作)

网上下载和上传数据(二)    Montaque(原作)    上一次介绍了WebClient的一些下载和上传数据的方法,今天着重看一下WebRequest 和 WebResponse两种我们访问Internet常用的类,严格说,WebRequest是一个抽象基类,我们一般用它的衍生类HttpWebRequest 以及 FileWebRequest,FTP的访问需要手动注册,具体看后面的插入协议. 从逻辑角度上讲,Net classes 包含三个层:请求/响应层.应用协议层和传输层,依次展开,从

如何通过云存储实现大文件的断点下载和上传

背景 对象存储 OSS是面向海量非结构化数据对象的存储服务.随着云计算的普及和飞速增长,越来越多的开发者把他们的应用建筑在了 OSS之上.OSS对外提供的是RESTful形式的接口,其最重要的特点之一是无状态性(statelessness),即OSS服务器不会保持除了单次请求之外的,任何与其通信的客户端的通信状态.因此对于断点续传这样有状态功能的实现,关键点在于如何在客户端完成状态维护 . 本文将以Python为例,介绍通过OSS是实现大文件的断点下载和断点上传的. 具体操作步骤 (一)在OSS

重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传

原文:重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 [源码下载] 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 后台下载任务 后台上传任务 示例扩展了 DownloadOperation 和 UploadOperation,以便下载进度或上传进度可通知BackgroundTask/TransferModel.cs /*

重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性

原文:重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 [源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之后台任务的新特性 下载和上传的新特性 程序启动前预下载网络资源 后台任务

Windows 8 Store Apps学习(66) 后台任务: 下载和上传

介绍 重新想象 Windows 8 Store Apps 之 后台任务 后台下载任务 后台上传任务 示例 扩展了 DownloadOperation 和 UploadOperation,以便下载进度或上传进度可通知 BackgroundTask/TransferModel.cs /* * 扩展了 DownloadOperation 和 UploadOperation,以便下载进度或上传进度可通知 */ using System; using System.ComponentModel; usin

FTP自动下载和上传的实现方法

这种方式的问题就是很麻烦,需要手工上传,当目录很深或者有多个服务器的时候很麻烦.另外也用过SVN的自动部署,文件修改后,check in到SVN,然后到服务器端svn update 以下,比较方便,但是遇到冲突也会很麻烦.所以之前在公司用的都是一个Java开发的上传工具,只要写好配置文件后就可以了,支持多服务器,多工程.     比如这样:  代码如下 复制代码 server.names=192.168.12.221,192.168.9.26,192.168.5.186,114.80.212.2

iTudou土豆网官方视频下载上传工具

土豆网是一个视频分享的网站,用户除了能在土豆网上看到最新的电视剧.日本动画.电影等等之外,还能上传视频分享给大家.虽然土豆和优酷合并了,但土豆网独有的视频资源还没跟优酷汇合在一起.因此,想下载最新的土豆网独家视频,还得跑去土豆网下载!笔者给大家列举了3种土豆网视频下载方法,一种比一种牛逼!没有下载不了的土豆网视频,只有不想动手的懒网虫. 注:土豆网视频格式的后缀名称是F4V,目前主流的视频播放器(如射手影音)都能正常播放F4V这种土豆网视频格式. 土豆网视频下载方法第一种:iTudou土豆网官方

Android FTP 多线程断点续传下载\上传的实例

最近在给我的开源下载框架Aria增加FTP断点续传下载和上传功能,在此过程中,爬了FTP的不少坑,终于将功能实现了,在此把一些核心功能点记录下载. FTP下载原理 FTP单线程断点续传 FTP和传统的HTTP协议有所不同,由于FTP没有所谓的头文件,因此我们不能像HTTP那样通过设置header向服务器指定下载区间. 但是FTP协议提供了一个更好用的命令REST用于从指定位置恢复任务,同时FTP协议也提供了一个命令SIZE用于获取下载的文件大小,有了这两个命令,FTP断点续传也就没有什么问题.

重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件

原文:重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 [源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之通信的新特性 下载数据(显示下载进度,将下载数据保存到本地) 上传数据(显示上传进度) 上传文件 示例HTTP 服务端WebServer/HttpDemo.