879
技術社區[雲棲]
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; } } }
三.運行結果
輸入https://www.baidu.com點擊”瀏覽“按鈕即可實現瀏覽百度網頁,同時注意在輸入URL中要加入"HTTP://”,它隻是簡單的實現,必然處理的方式都是按照基本語法解析。
點擊“全屏”能如下顯示:
但是在瀏覽時也有一些問題:一個是提示“沒有權限”的腳本錯誤,另一個是瀏覽有的網站如我們的校內網時它的顯示格式是錯誤的,我們有時上網也遇到過校內網這種錯誤的格式,這些都是我接下來需要思考的問題。
同時,在瀏覽百度網站時我在IE中的狀態是登錄的,能顯示我的用戶名,而用該瀏覽器發現是未登錄狀態,這就證實了很多我們上網的信息是臨時存儲在Cookies或Session中的,這幫助我回顧了以前PHP課程中的內容。
收藏一個網址詳細介紹了webbrowser控件,其中webBrowser1.Navigate(textBox1.Text.Trim());一句話即可實現瀏覽功能,而且不會出現ISO-8859-1亂碼問題.
https://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html
最後,通過這個例子能很好的了解一些HTTP網絡編程知識,同時能實現簡單的瀏覽器,如果有不足或錯誤的地方,希望大家海涵!希望這篇文章能幫組大家,同時也幫組了我自己。
(BY:Eastmount 2013-7-26-早8點 https://blog.csdn.net/eastmount/)
最後更新:2017-04-03 16:48:43