這是根據《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屬性為“http://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點)