C# 网络编程之最简单浏览器实现
? ? ? 最近學(xué)習(xí)C#網(wǎng)絡(luò)編程的HTTP協(xié)議編程,HTTP即Hypertext Transfer Protocol的縮寫,意為:超文本傳輸協(xié)議。其中與HTTP相關(guān)的知識(shí)主要有六個(gè)類的知識(shí),分別是
? ? ??(1).HttpWebRequest類:用于獲取和操作HTTP請(qǐng)求;
? ? ? (2).HttpWebResponse類:用于獲取和操作HTTP應(yīng)答;
? ? ? (3).WebRequest類:用于獲取和操作Web請(qǐng)求;
? ? ? (4).WebResponse類:用于獲取和操作Web應(yīng)答;
? ? ? (5).Uri類:用于獲取和操作網(wǎng)絡(luò)資源位置;
? ? ? (6).WebClient類:用于網(wǎng)絡(luò)客戶端操作.
? ? ? 下面主要是利用利用上面所述類的方法獲取相應(yīng)URL的應(yīng)答內(nèi)容,通過(guò)賦值數(shù)據(jù)流,再?gòu)淖止?jié)流中讀取內(nèi)容賦值給webBrowser控件中實(shí)現(xiàn)最簡(jiǎn)單的瀏覽器,但內(nèi)容雖少,但也體現(xiàn)了瀏覽器基本的一些操作和HTTP相關(guān)的網(wǎng)絡(luò)編程知識(shí)。
一.界面設(shè)計(jì)
? ? ? 界面中添加label1”輸入網(wǎng)址“,添加一個(gè)textBox作為輸入的網(wǎng)址,添加button1其text屬性為”瀏覽“。最重要的是添加一個(gè)webBrower控件,該控件指"允許用戶在該控件中瀏覽網(wǎng)頁(yè)",并且設(shè)置其Anchor屬性(定義控件綁定到容器邊緣)為Top、Bottom、Left、Right。這樣點(diǎn)擊全屏?xí)r能動(dòng)態(tài)跟隨變換的顯示網(wǎng)頁(yè)內(nèi)容。
二.源代碼
? ? ? 主要是點(diǎn)擊”瀏覽“按鈕生成相應(yīng)的點(diǎn)擊事件,在事件中添加相關(guān)瀏覽器代碼即可實(shí)現(xiàn),同時(shí)還要添加相應(yīng)的命名空間。
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){//獲取輸入的URLstring url = textBox1.Text;//創(chuàng)建http鏈接//HttpWebRequest對(duì)象實(shí)例:該類用于獲取和操作HTTP請(qǐng)求 var可改成HttpWebRequestvar request = (HttpWebRequest)WebRequest.Create(url); //Create:創(chuàng)建WebRequest對(duì)象//HttpWebResponse對(duì)象實(shí)例:該類用于獲取和操作HTTP應(yīng)答 var可改成HttpWebResponsevar response = (HttpWebResponse)request.GetResponse(); //GetResponse:獲取答復(fù)//構(gòu)造數(shù)據(jù)流對(duì)象實(shí)例Stream stream = response.GetResponseStream();//GetResponseStream:獲取應(yīng)答流StreamReader sr = new StreamReader(stream); //從字節(jié)流中讀取字符//從流當(dāng)前位置讀取到末尾并顯示在WebBrower控件中string content = sr.ReadToEnd();webBrowser1.DocumentText = content; }} }三.運(yùn)行結(jié)果
? ? ? 輸入http://www.baidu.com點(diǎn)擊”瀏覽“按鈕即可實(shí)現(xiàn)瀏覽百度網(wǎng)頁(yè),同時(shí)注意在輸入U(xiǎn)RL中要加入"HTTP://”,它只是簡(jiǎn)單的實(shí)現(xiàn),必然處理的方式都是按照基本語(yǔ)法解析。
? ? ? 點(diǎn)擊“全屏”能如下顯示:
? ? ? 但是在瀏覽時(shí)也有一些問(wèn)題:一個(gè)是提示“沒(méi)有權(quán)限”的腳本錯(cuò)誤,另一個(gè)是瀏覽有的網(wǎng)站如我們的校內(nèi)網(wǎng)時(shí)它的顯示格式是錯(cuò)誤的,我們有時(shí)上網(wǎng)也遇到過(guò)校內(nèi)網(wǎng)這種錯(cuò)誤的格式,這些都是我接下來(lái)需要思考的問(wèn)題。
? ? ? 同時(shí),在瀏覽百度網(wǎng)站時(shí)我在IE中的狀態(tài)是登錄的,能顯示我的用戶名,而用該瀏覽器發(fā)現(xiàn)是未登錄狀態(tài),這就證實(shí)了很多我們上網(wǎng)的信息是臨時(shí)存儲(chǔ)在Cookies或Session中的,這幫助我回顧了以前PHP課程中的內(nèi)容。
? ? ? 收藏一個(gè)網(wǎng)址詳細(xì)介紹了webbrowser控件,其中webBrowser1.Navigate(textBox1.Text.Trim());一句話即可實(shí)現(xiàn)瀏覽功能,而且不會(huì)出現(xiàn)ISO-8859-1亂碼問(wèn)題.
? ? ??http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html
? ? ? 最后,通過(guò)這個(gè)例子能很好的了解一些HTTP網(wǎng)絡(luò)編程知識(shí),同時(shí)能實(shí)現(xiàn)簡(jiǎn)單的瀏覽器,如果有不足或錯(cuò)誤的地方,希望大家海涵!希望這篇文章能幫組大家,同時(shí)也幫組了我自己。
? ? (BY:Eastmount 2013-7-26-早8點(diǎn) ?http://blog.csdn.net/eastmount/)?
總結(jié)
以上是生活随笔為你收集整理的C# 网络编程之最简单浏览器实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# 网络编程之使用Socket类Sen
- 下一篇: C# 基础知识 (一).概念与思想篇