1. 程式人生 > >C# 網路程式設計之最簡單瀏覽器實現

C# 網路程式設計之最簡單瀏覽器實現

      最近學習C#網路程式設計的HTTP協議程式設計,HTTP即Hypertext Transfer Protocol的縮寫,意為:超文字傳輸協議。其中與HTTP相關的知識主要有六個類的知識,分別是
(1).HttpWebRequest類:用於獲取和操作HTTP請求;
      (2).HttpWebResponse類:用於獲取和操作HTTP應答;
      (3).WebRequest類:用於獲取和操作Web請求;
      (4).WebResponse類:用於獲取和操作Web應答;
      (5).Uri類:用於獲取和操作網路資源位置;
      (6).WebClient類:用於網路客戶端操作.

      下面主要是利用利用上面所述類的方法獲取相應URL的應答內容,通過賦值資料流,再從位元組流中讀取內容賦值給webBrowser控制元件中實現最簡單的瀏覽器,但內容雖少,但也體現了瀏覽器基本的一些操作和HTTP相關的網路程式設計知識。

一.介面設計

      介面中新增label1”輸入網址“,新增一個textBox作為輸入的網址,新增button1其text屬性為”瀏覽“。最重要的是新增一個webBrower控制元件,該控制元件指"允許使用者在該控制元件中瀏覽網頁",並且設定其Anchor屬性(定義控制元件繫結到容器邊緣)為Top、Bottom、Left、Right。這樣點選全屏時能動態跟隨變換的顯示網頁內容。

二.原始碼

      主要是點選”瀏覽“按鈕生成相應的點選事件,在事件中新增相關瀏覽器程式碼即可實現,同時還要新增相應的名稱空間。

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 HttpWeb
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //雙擊"瀏覽"新增Click事件
        private void button1_Click(object sender, EventArgs e)
        {
            //獲取輸入的URL
            string url = textBox1.Text;

            //建立http連結
            //HttpWebRequest物件例項:該類用於獲取和操作HTTP請求 var可改成HttpWebRequest
            var request = (HttpWebRequest)WebRequest.Create(url); //Create:建立WebRequest物件

            //HttpWebResponse物件例項:該類用於獲取和操作HTTP應答 var可改成HttpWebResponse
            var response = (HttpWebResponse)request.GetResponse(); //GetResponse:獲取答覆

            //構造資料流物件例項
            Stream stream = response.GetResponseStream();//GetResponseStream:獲取應答流
            StreamReader sr = new StreamReader(stream);  //從位元組流中讀取字元

            //從流當前位置讀取到末尾並顯示在WebBrower控制元件中
            string content = sr.ReadToEnd();
            webBrowser1.DocumentText = content;      
        }
    }
}

三.執行結果

      輸入http://www.baidu.com點選”瀏覽“按鈕即可實現瀏覽百度網頁,同時注意在輸入URL中要加入"HTTP://”,它只是簡單的實現,必然處理的方式都是按照基本語法解析。

      點選“全屏”能如下顯示:

      但是在瀏覽時也有一些問題:一個是提示“沒有許可權”的指令碼錯誤,另一個是瀏覽有的網站如我們的校內網時它的顯示格式是錯誤的,我們有時上網也遇到過校內網這種錯誤的格式,這些都是我接下來需要思考的問題。
      同時,在瀏覽百度網站時我在IE中的狀態是登入的,能顯示我的使用者名稱,而用該瀏覽器發現是未登入狀態,這就證實了很多我們上網的資訊是臨時儲存在Cookies或Session中的,這幫助我回顧了以前PHP課程中的內容。
      收藏一個網址詳細介紹了webbrowser控制元件,其中webBrowser1.Navigate(textBox1.Text.Trim());一句話即可實現瀏覽功能,而且不會出現ISO-8859-1亂碼問題.
      

      最後,通過這個例子能很好的瞭解一些HTTP網路程式設計知識,同時能實現簡單的瀏覽器,如果有不足或錯誤的地方,希望大家海涵!希望這篇文章能幫組大家,同時也幫組了我自己。
    (BY:Eastmount 2013-7-26-早8點  http://blog.csdn.net/eastmount/)