C# 網路編程之網頁簡單下載實現

來源:互聯網
上載者:User

這是根據《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點)

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.