checkurl是否存在(用C# 的HttpWebRequest和HttpWebResponse方法)
上一篇 / 下一篇 2010-08-31 15:14:19 / 个人分类:C#学习
用C# 的HttpWebRequest和HttpWebResponse方法checkurl是否存在
例如1:check http://www.baidu.com/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
namespace checkurl
{
class Program
{
static void Main(string[] args)
{
try
{
String url = "http://www.baidu.com/";
//HttpWebRequest实例不使用HttpWebRequest的构造函数来创建,而是使用WebRequest的Create方法来创建.
//创建一个HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
//不维持与服务器的请求状态
request.KeepAlive = false;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
request.Timeout = 6000;
//创建一个HttpWebResponse对象
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//判断响应的url是否正确
if (response.ResponseUri.ToString() == url)
{
System.Console.WriteLine("请求成功");
}
else
{
System.Console.WriteLine("请求失败");
}
System.Console.ReadLine();
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
}
}
HttpWebRequest和HttpWebResponse介绍
一:HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。请注意,HttpWebRequest对象不是利用new关键字通过构造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。
例如:HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com/");
二:另外,你可能预计需要显式地调用一个“Send”方法,实际上不需要。
接下来调用 HttpWebRequest.GetResponse()方法返回的是一个HttpWebResponse对象。
例如:HttpWebResponse response = (HttpWebResponse)request.GetResponse();
三:你可以把HTTP响应的数据流(stream)绑定到一个StreamReader对象,然后就可以通过ReadToEnd()方法把整个HTTP响应作为一个字符串取回。
也可以通过 StreamReader.ReadLine()方法逐行取回HTTP响应的内容。
这种技术展示了如何限制请求重定向(request redirections)的次数, 并且设置了一个超时限制。下面是HttpWebRequest的一些属性,这些属性对于轻量级的自动化测试程序是非常重要的。
1、AllowAutoRedirect:获取或设置一个值,该值指示请求是否应跟随重定向响应。
例如:request.AllowAutoRedirect = true;
2、CookieContainer:获取或设置与此请求关联的cookie。
例如:request.CookieContainer = container; //container是cookie
3、Credentials:获取或设置请求的身份验证信息。
4、KeepAlive:获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接。
例如:request.KeepAlive = false;
5、MaximumAutomaticRedirections:获取或设置请求将跟随的重定向的最大数目。
6、Proxy:获取或设置请求的代理信息。
例如:request.Proxy = new WebProxy("10.60.0.xx");
7、SendChunked:获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。
8、Timeout:获取或设置请求的超时值。
例如:request.Timeout = 10000;
9、UserAgent:获取或设置 User-agent HTTP 标头的值。
例如:request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
例子2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
namespace checkurl
{
class Program
{
static String[] url = new String[2]{ "http://www.baidu.com/","http://www.google.com.hk/" };
static int completeProxyCount;
public static ManualResetEvent clientsCompletedEvent = new ManualResetEvent(false);
static void Main(string[] args)
{
for (int i = 0; i < url.Length; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(MyThreadWork), i);
}
try
{
clientsCompletedEvent.WaitOne();
}
finally
{
clientsCompletedEvent.Close();
}
System.Console.ReadLine();
}
public static void MyThreadWork(object state)
{
urlcheck(Convert.ToInt32(state));
}
static void urlcheck(int i)
{
System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url[i]);
//request.Proxy = new WebProxy("10.60.0.XX");
//request.CookieContainer = container;
request.Method = "GET";
request.KeepAlive = false;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
request.Timeout = 10000;
WebResponse response = request.GetResponse();
if (response.ResponseUri.ToString() == url[i])
{
System.Console.WriteLine("第{0}个url请求成功,response的url是:{1}", i, response.ResponseUri.ToString());
}
else
{
System.Console.WriteLine("第{0}个url请求失败,response的url是:{1}", i, response.ResponseUri.ToString());
}
}
catch (Exception ex)
{
System.Console.WriteLine("第" + i + "个url" + ex.Message);
}
finally
{
if (Interlocked.Increment(ref completeProxyCount) == url.Length)
{
clientsCompletedEvent.Set();
}
}
}
}
}
//或者这么读取数据
System.IO.StreamReader sr = new StreamReader(response.GetResponseStream();//获取响应的数据流
System.Text.Encoding.GetEncoding("gb2312")); //编码是gb2312
String responseFromserver = sr.ReadToEnd(); //读取数据流
Console.Write(responseFromserver);
sr.Close();
response.Close();
//获取http地址上的图片
System.Drawing.Image img; img = new System.Drawing.Bitmap(response.GetResponseStream());
例如1:check http://www.baidu.com/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
namespace checkurl
{
class Program
{
static void Main(string[] args)
{
try
{
String url = "http://www.baidu.com/";
//HttpWebRequest实例不使用HttpWebRequest的构造函数来创建,而是使用WebRequest的Create方法来创建.
//创建一个HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
//不维持与服务器的请求状态
request.KeepAlive = false;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
request.Timeout = 6000;
//创建一个HttpWebResponse对象
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//判断响应的url是否正确
if (response.ResponseUri.ToString() == url)
{
System.Console.WriteLine("请求成功");
}
else
{
System.Console.WriteLine("请求失败");
}
System.Console.ReadLine();
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
}
}
HttpWebRequest和HttpWebResponse介绍
一:HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。请注意,HttpWebRequest对象不是利用new关键字通过构造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。
例如:HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com/");
二:另外,你可能预计需要显式地调用一个“Send”方法,实际上不需要。
接下来调用 HttpWebRequest.GetResponse()方法返回的是一个HttpWebResponse对象。
例如:HttpWebResponse response = (HttpWebResponse)request.GetResponse();
三:你可以把HTTP响应的数据流(stream)绑定到一个StreamReader对象,然后就可以通过ReadToEnd()方法把整个HTTP响应作为一个字符串取回。
也可以通过 StreamReader.ReadLine()方法逐行取回HTTP响应的内容。
这种技术展示了如何限制请求重定向(request redirections)的次数, 并且设置了一个超时限制。下面是HttpWebRequest的一些属性,这些属性对于轻量级的自动化测试程序是非常重要的。
1、AllowAutoRedirect:获取或设置一个值,该值指示请求是否应跟随重定向响应。
例如:request.AllowAutoRedirect = true;
2、CookieContainer:获取或设置与此请求关联的cookie。
例如:request.CookieContainer = container; //container是cookie
3、Credentials:获取或设置请求的身份验证信息。
4、KeepAlive:获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接。
例如:request.KeepAlive = false;
5、MaximumAutomaticRedirections:获取或设置请求将跟随的重定向的最大数目。
6、Proxy:获取或设置请求的代理信息。
例如:request.Proxy = new WebProxy("10.60.0.xx");
7、SendChunked:获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。
8、Timeout:获取或设置请求的超时值。
例如:request.Timeout = 10000;
9、UserAgent:获取或设置 User-agent HTTP 标头的值。
例如:request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
例子2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
namespace checkurl
{
class Program
{
static String[] url = new String[2]{ "http://www.baidu.com/","http://www.google.com.hk/" };
static int completeProxyCount;
public static ManualResetEvent clientsCompletedEvent = new ManualResetEvent(false);
static void Main(string[] args)
{
for (int i = 0; i < url.Length; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(MyThreadWork), i);
}
try
{
clientsCompletedEvent.WaitOne();
}
finally
{
clientsCompletedEvent.Close();
}
System.Console.ReadLine();
}
public static void MyThreadWork(object state)
{
urlcheck(Convert.ToInt32(state));
}
static void urlcheck(int i)
{
System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url[i]);
//request.Proxy = new WebProxy("10.60.0.XX");
//request.CookieContainer = container;
request.Method = "GET";
request.KeepAlive = false;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 3.5.21022; CIBA)";
request.Timeout = 10000;
WebResponse response = request.GetResponse();
if (response.ResponseUri.ToString() == url[i])
{
System.Console.WriteLine("第{0}个url请求成功,response的url是:{1}", i, response.ResponseUri.ToString());
}
else
{
System.Console.WriteLine("第{0}个url请求失败,response的url是:{1}", i, response.ResponseUri.ToString());
}
}
catch (Exception ex)
{
System.Console.WriteLine("第" + i + "个url" + ex.Message);
}
finally
{
if (Interlocked.Increment(ref completeProxyCount) == url.Length)
{
clientsCompletedEvent.Set();
}
}
}
}
}
//或者这么读取数据
System.IO.StreamReader sr = new StreamReader(response.GetResponseStream();//获取响应的数据流
System.Text.Encoding.GetEncoding("gb2312")); //编码是gb2312
String responseFromserver = sr.ReadToEnd(); //读取数据流
Console.Write(responseFromserver);
sr.Close();
response.Close();
//获取http地址上的图片
System.Drawing.Image img; img = new System.Drawing.Bitmap(response.GetResponseStream());
TAG:
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | ||||||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 |
我的存档
数据统计
- 访问量: 12473
- 日志数: 15
- 建立时间: 2010-08-04
- 更新时间: 2014-07-11