下面我們將通過一個簡單的應(yīng)用程序來測試WebClient的最簡單用法作為本小節(jié)的結(jié)束讓大家對WebClient有個初步的認(rèn)識 例子1:利用WebClient實現(xiàn)對博客園首頁的訪問 首先我們用HttpLook對這次訪問進行分析,為了方便分析我特別將瀏覽器對圖片的訪問去掉 讓我們能看到更簡便的分析結(jié)果 我們可以看到整個過程中我們發(fā)起了4次資源請求,其中第一次是對博客園首頁進行訪問 第二次訪問的是樣式表文件,第三和四次訪問的是js腳本。 我們點擊第一項可以看見關(guān)于這次資源訪問的http頭部信息,所謂http頭部就是我們不能看見的瀏覽器和遠程服務(wù)器傳遞的一些不可見元素。生活歷程 1GET / HTTP/1.1 2Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* 3Accept-Language: zh-cn 4UA-CPU: x86 5Accept-Encoding: gzip, deflate 6User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) 7Host: www.cnblogs.com 8Connection: Keep-Alive 9Cookie: .DottextCookie=(隱藏)
這些http信息包含了瀏覽器訪問的過程。其中 第一行:請求地址的相對路徑和使用協(xié)議 相對路徑為/ 協(xié)議采用http1.1 第二行:表示我們請求的資源種類。 第三行:我們的語言是簡體中文。 第四行:我們使用的cup結(jié)構(gòu)。這個http頭在一般的網(wǎng)頁中并不過見。估計是博客園的一次調(diào)查?? 第五行:標(biāo)示采用gzip方式壓縮html編碼進行傳遞。只有一些瀏覽器支持的gzip解壓縮時采用這種方式傳遞文本。由于我們 要寫的程序不具備gzi解壓縮的能力 所以我們不考慮使用這種方式發(fā)送請求。 第六行:瀏覽器說明 第七行:當(dāng)前主機地址 第八行:連接請求狀態(tài) 第九行:cookies信息 我在新建的應(yīng)用程序里面利用WebClient來實現(xiàn)這了一過程。 下面我將就關(guān)鍵實現(xiàn)做一些解釋 1WebClient _client=new WebClient(); 2 _client.BaseAddress="http://www.cnblogs.com"; 3 _client.Headers.Add("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"); 4 _client.Headers.Add("Accept-Language","zh-cn"); 5 _client.Headers.Add("UA-CPU","x86"); 6 //_client.Headers.Add("Accept-Encoding","gzip, deflate"); 7 _client.Headers.Add("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); 8 System.IO.Stream objStream=_client.OpenRead("/"); 9 System.IO.StreamReader _read=new System.IO.StreamReader(objStream,System.Text.Encoding.UTF8); 10 textBox1.Text=_read.ReadToEnd();
第一行:新建一個WebClient 實例_client 第二行~第七行:將上邊捕捉到的Http頭部放入到_client實例,注意第六行的被注釋掉了。因為我們的程序無法進行g(shù)zip解碼所以如果這樣請求 獲得的資源可能無法解碼。當(dāng)然我們可以給程序加入gzip處理的模塊 那是題外話了。 第八行:利用_client.OpenRead(string URI)的方法獲取網(wǎng)上資源的Stream 第九行:利用StreamReader將Stream用我們需要的編碼方法去解析。這里使用了UTF8。對應(yīng)不同的網(wǎng)站可以使用Default等不同的解碼方法。 第十行:將我們解碼后的內(nèi)容放到textBox1里面顯示出來
好了 大致關(guān)于WebClient的介紹就到這里了。以后將為大家陸續(xù)介紹WebClient的各種屬性和方法。 利用WebClient做個資源小偷其實是很簡單的,所以大家一定要防盜鏈阿?。?!
|