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