WebRequest, WebResponse , HttpWebResponse, HttpWebResponse , WebClient筆記

來源:互聯網
上載者:User

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轉向的控制,還有就是缺少對Proxy 伺服器的支援。”

 

推薦資料: 

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

聯繫我們

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