C# 網絡編程之網頁簡單下載實現
這是根據《C#網絡編程實例教程》中學到的知識實現的一個C#網頁簡單下載器,其中涉及到的知識主要是HTTP協議編程中相關類:HttpWebRequest類、HttpWebResponse類、WebRequest類、WebResponse類、Uri類、WebClient類。通過它們相應的方法實現,這裏涉及到了4個新接觸的知識點我想重點講述:
(1).ComboBox控件:這是一個下拉列表的可編輯的文本框,右鍵該控件在顯示的"編輯項"中添加網址,可見實例中的下拉控件;
(2).saveFileDialog控件:這是一個保存文件位置對話框,通過該控件可以保存文本文件在自定義位置,還有一個相對應的打開控件OpenFileDialog;
(3).HttpWebResponse類屬性:該類常用屬性如下:每個類都有相應的屬性,這裏隻詳細說明HttpWebResponse類的屬性:
在下列實例中我使用的是HttpWebResponse response.ContentLength獲取應答內容長度。
(4).try..catch..finally:用於處理異常情況,try塊中使用引發異常語句,try塊中發生異常後跳轉到catch異常處理程序,catch用於異常處理程序,即使引發異常,finally塊中的代碼也會執行,從程序中釋放資源。
一.界麵設計
添加saveFileDialog控件,該控件的Filter(文件篩選器)屬性設置為"Web文件|*.htm"
添加一個ComboBox控件設置Text屬性為“https://www.baidu.com”,右鍵該控件Items屬性添加如下幾條網址:
二.源代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; //添加命名空間 using System.Net; using System.IO; namespace Http_Web_Request { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //雙擊"開始下載"添加Click事件 private void button1_Click(object sender, EventArgs e) { string uri = comboBox1.Text; //HttpWebRequest對象實例:該類用於獲取和操作HTTP請求 創建WebRequest對象 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); //HttpWebResponse對象實例:該類用於獲取和操作HTTP應答 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //獲取答複 //構造數據流、文件流對象實例 Stream stream = null; FileStream filestream = null; try { //獲取應答流賦值 stream = response.GetResponseStream(); //確定應答內容的大小 long size = response.ContentLength; //定義"另存為對話框"文件類型 saveFileDialog1.Filter = "網頁文件(*.htm)|*.htm|ASP.NET文件(*.aspx)|*.aspx"; //打開保存對話框 點擊"確定"按鈕執行 if (saveFileDialog1.ShowDialog() == DialogResult.OK) { //為文件流對象實例賦值 filestream = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.Write); int length = 1024; byte[] Num = new byte[1025]; //構造字組 int i = 0; while ((i = stream.Read(Num, 0, length)) > 0) //流不為空寫流 { filestream.Write(Num, 0, i); //寫流 } } } catch (Exception msg) { MessageBox.Show(msg.Message); //異常處理 } finally { stream.Close(); //關閉流 filestream.Close(); } } } }
三.運行結果
運行程序在“下拉”菜單中選擇“百度”,點擊“開始下載”後彈出的保存對話框中選擇下載地址自定義命名保存,如下圖所示:
保存後顯示下載後的靜態網址如下圖所示:
同時也在保存有的靜態網頁時會產生亂碼,如csdn網站,它下載的內容不像我們說看到的正常形式保存的。
四.總結
通過這個例子關於Http網絡編程知識我想主要表達saveFileDialog控件的使用、ComboBox下拉控件的使用、類中常用的屬性的熟悉及了解、try.catch.finally語法的應用,感謝我看的書籍作者、一些博客及自己,這篇文章加深了我自己對相關知識的了解,同時也希望幫助大家!有錯誤或不足之處見諒!
(By:Eastmount 7-30-下午4點
https://blog.csdn.net/eastmount/)
最後更新:2017-04-03 16:48:47