zoukankan      html  css  js  c++  java
  • WebRequest, WebResponse , HttpWebResponse, HttpWebResponse , WebClient笔记

    1.WebRequest, WebResponse  与 HttpWebRequest, HttpWebResponse

    WebRequest是一个抽象类, HttpWebRequest和FtpWebRequest都是它的子类。

    WebResponse也是一个抽象类, HttpWebResponse和FtpWebResponse都是它的子类。

    2.WebRequest, WebResponse 例子

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;

    namespace WindowsFormsAppWebRequest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Uri uri = new Uri(this.textBox2.Text);

                WebRequest req = WebRequest.Create(uri);

                //req.Headers.Add("User-Agent", "ie9");

                WebResponse respose = req.GetResponse();
               
                Stream ReceiveStream = respose.GetResponseStream();

                StreamReader sr = new StreamReader(ReceiveStream);

                string resultstring = sr.ReadToEnd();

                this.textBox1.Text = resultstring;
            }
        }
    }

    3.HttpWebRequest, HttpWebResponse 完成同样功能例子

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;

    namespace WindowsFormsAppWebRequest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Uri uri = new Uri(this.textBox2.Text);

                HttpWebRequest req = HttpWebRequest.Create(uri) as HttpWebRequest;

                req.Headers.Add("User-Agent", "ie9");

                HttpWebResponse respose = req.GetResponse() as HttpWebResponse;
               
                Stream ReceiveStream = respose.GetResponseStream();

                StreamReader sr = new StreamReader(ReceiveStream);

                string resultstring = sr.ReadToEnd();

                this.textBox1.Text = resultstring;
            }
        }
    }

    4.那到底WebRequest与HttpWebRequest有何区别呢?

    就在于http的特别之处,比如

    req.Headers.Add("User-Agent", "ie9");

    可以在HttpWebRequest中使用,但在WebRequest中不可以。

    5.FtpWebRequest和FtpWebResponse的例子以后再补,不过原理是一样的。

    6. WebClient的例子

    WebClient client = new WebClient();
    client.BaseAddress = textBox2.Text;
    Stream obj = client.OpenRead("/");
    StreamReader read=new StreamReader(obj);
    this.textBox1.Text = read.ReadToEnd();

    7. WebClient与HttpWebRequest的比较

    WebRequest, HttpWebRequest能完成的工作WebClient也都能做,那他们有何区别?看一下源代码即可知道,WebClient里面实际是调用了WebRequest的方法完成的相应功能。

    按照titi的话说“.Net框架中已经为我们提供了WebRequest和WebResponse两个强大的类来处理向URI标示的资源和获取数据了。然后,不足的是利用WebRequest和WebResponse时设置过于复杂。
    使用起来颇为费劲。于是乎有了现在的WebClient,WebClient其实可以理解为对WebRequest和WebResponse等协作的封装。它使人们使用起来更加简单方便,然后它也有先天不足的地方。

    那就是缺少对cookies/session的支持,用户无法对是否自动url转向的控制,还有就是缺少对代理服务器的支持。”

    推荐资料: 

    Determining Whether the Device Is Connected
    http://www.cnblogs.com/tuyile006/archive/2008/11/14/1333632.html

    WebClient的研究笔记(一)--认识WebClien

    thttp://www.cnblogs.com/titi/archive/2005/11/20/280914.html

  • 相关阅读:
    suse12安装详解
    Centos7上部署openstack mitaka配置详解(将疑难点都进行划分)
    菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
    openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
    Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
    查看 SELinux状态及关闭SELinux
    SELinux深入理解
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址
    Oracle job procedure 存储过程定时任务
    POI文件导出至EXCEL,并弹出下载框
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2520272.html
Copyright © 2011-2022 走看看