C# 网络编程之最简单浏览器实现

举报
eastmount 发表于 2021/10/25 22:08:15 2021/10/25
【摘要】 本文是多年前的分享,主要介绍C#网络编程。这篇文章主要介绍C#网络编程的HTTP协议编程,并实现一个简单的浏览器。基础性文章,希望对您有所帮助。

      最近学习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;      
        }
    }
}

三.运行结果

      输入百度一下,你就知道点击”浏览“按钮即可实现浏览百度网页,同时注意在输入URL中要加入"HTTP://”,它只是简单的实现,必然处理的方式都是按照基本语法解析。

      点击“全屏”能如下显示:

      但是在浏览时也有一些问题:一个是提示“没有权限”的脚本错误,另一个是浏览有的网站如我们的校内网时它的显示格式是错误的,我们有时上网也遇到过校内网这种错误的格式,这些都是我接下来需要思考的问题。
      同时,在浏览百度网站时我在IE中的状态是登录的,能显示我的用户名,而用该浏览器发现是未登录状态,这就证实了很多我们上网的信息是临时存储在Cookies或Session中的,这帮助我回顾了以前PHP课程中的内容。
      收藏一个网址详细介绍了webbrowser控件,其中webBrowser1.Navigate(textBox1.Text.Trim());一句话即可实现浏览功能,而且不会出现ISO-8859-1乱码问题.
      C#中的WebBrowser控件的使用 - 方倍工作室 - 博客园

      最后,通过这个例子能很好的了解一些HTTP网络编程知识,同时能实现简单的浏览器,如果有不足或错误的地方,希望大家海涵!希望这篇文章能帮组大家,同时也帮组了我自己。感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。

      (By:娜璋之家 Eastmount 2021-10-25 夜于武汉)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。