C# 網路編程之最簡單瀏覽器實現

來源:互聯網
上載者:User

最近學習C#網路編程的HTTP協議編程,HTTP即Hypertext Transfer Protocol的縮寫,意為:超文字傳輸通訊協定 (HTTP)。

其中與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課程中的內容。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.