C#网络编程
1. WebClient类 1
(1) WebClient类的主要方法 1
(2) DownloadData()方法 1
(3) OpenRead()方法 1
(4) UploadData()方法 2
(5) 总结WebClient类 2
2. WebRequest类与WebResponse类 2
(1) WebRequest类与WebResponse类简介 2
(2) 使用示例 2
(3) WebRequest类与WebResponse类的子类(继承结构) 2
(4) HttpWebRequest类与HttpWebResponse类使用示例 3
(5) 身份验证 3
(6) 使用代理 3
(7) 异步请求 4
3. WebBrowser控件 4
(1) 使用WebBrowser控件 4
(2) WebBrowser控件常用属性、方法与事件 4
4. 网络工具类(URL、IP、DNS) 5
(1) Uri与UriBuilder 5
(2) IPAddress、IPHostEntry 与Dns 5
(3) 解码与编码(Encoding) 6
5. 底层的网络协议类 6
(1) Socket 6
(2) NetworkStream、TcpClient与TcpListener 7
(3) UdpClient 8
(4) SmtpClient 9
作者:李志伟
时间:2014-02-07
1.WebClient类
(1)WebClient类的主要方法
DownloadXXX()方法:下载URI资源文件
OpenXXX()方法:打开URI资源流
UploadXXX()方法:上传资源到URI
(2)DownloadData()方法
class Program
{
staticurl编码和utf8区别 void Main(string[] args)
{
WebClient web = new WebClient();
byte[] temp = web.DownloadData("www.baidu");//下载URI资源文件
string Response = Encoding.UTF8.GetString(temp);//解码
Console.WriteLine(Response);
Console.Read();
}
}
(3)OpenRead()方法
class Program
{
static void Main(string[] args)
{
WebClient web = new WebClient();
Stream st = web.OpenRead("www.baidu");//打开URI资源流
StreamReader sr = new StreamReader(st);
string Response = sr.ReadToEnd();
Console.WriteLine(Response);
Console.Read();
}
}
(4)UploadData()方法
class Program
{
static void Main(string[] args)
{
WebClient web = new WebClient();
string str = "李志伟";
byte[] response =
web.UploadData("www.baidu", Encoding.Default.GetBytes(str));
Console.WriteLine(Encoding.Default.GetString(response));//解码
Console.Read();
}
}
上传数据时出现问题,百度报错!这是因为没有权限。
(5)总结WebClient类
虽然WebClient类使用简单,但是其功能有限,特别是不能使用它提供身份验证证书。这样,在上传数据时问题就出现了,许多站点不接受没有身份验证的上传文件。这是由于We
bClient类是非常一般的类,可以使用任意协议发送请求和接受响应(如:HTTP、FTP等)。但它不能处理特定于任何协议的任何特性,例如,专用于HTTP的cookie。如果想利用这些特性就需要使用WebRequest类与WebResponse类为基类的一系列类。
2.WebRequest类与WebResponse类
(1)WebRequest类与WebResponse类简介
WebRequest类与WebResponse类是抽象类,其子类对象代表某个特定URI协议的请求对象或响应对象。调用WebRequest.Create()方法得到WebResponse对象。调用WebResponse对象的GetResponse()方法得到WebResponse对象。
(2)使用示例
class Program
{
static void Main(string[] args)
{
WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
WebResponse res = req.GetResponse();//得到相应对象
Stream strm = res.GetResponseStream();//得到相应数据流
StreamReader sr = new StreamReader(strm);
Console.WriteLine(sr.ReadToEnd());
Console.Read();
}
}
(3)WebRequest类与WebResponse类的子类(继承结构)
(4)HttpWebRequest类与HttpWebResponse类使用示例
class Program
{
static void Main(string[] args)
{
string uri = "www.baidu";
HttpWebRequest httpRe = (HttpWebRequest)HttpWebRequest.Create(uri);
HttpWebResponse httpRes = (HttpWebResponse)httpRe.GetResponse();
Stream strm = httpRes.GetResponseStream();//得到相应数据流
StreamReader sr = new StreamReader(strm);
Console.WriteLine(sr.ReadToEnd());
Console.Read();
}
}
这里以HTTP协议为例使用了对应了类,其他协议的类的使用方法与此类似。
(5)身份验证
如果需要把身份验证证书附带在请求中,就使用WebRequest类中的Credentials属性。
class Program
{
static void Main(string[] args)
{
WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
NetworkCredential cred = new NetworkCredential("userName", "password");
req.Credentials = cred;//调用GetResponse()之前赋值
WebResponse res = req.GetResponse();//得到相应对象
Stream strm = res.GetResponseStream();//得到相应数据流
StreamReader sr = new StreamReader(strm);
Console.WriteLine(sr.ReadToEnd());
Console.Read();
}
}
(6)使用代理
使用代理服务器需要用到WebRequest类中的Proxy属性,以及WebProxy对象。
class Program
{
static void Main(string[] args)
{
WebRequest req = WebRequest.Create("www.baidu");//得到请求对象
NetworkCredential cred = new NetworkCredential("userName", "password","Domain");
WebProxy wp = new WebProxy("192.168.1.100", true);//设置代理服务器地址
req.Credentials = cred;//调用GetResponse()之前赋值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论