網上下載和上傳數據(一) Montaque(原作)
2024-07-21 02:21:59
供稿:網友
網上下載和上傳數據(一) 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。