網上下載和上傳資料(一) Montaque(原作)

來源:互聯網
上載者:User
上傳|資料|下載 網上下載和上傳資料(一)    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。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。