用C#检测网站状态,方法是发送Http code 请求,十个左右网站,但检测时候经常出现检测失败等情况

用C#检测网站状态,方法是发送Httpcode请求,十个左右网站,但检测时候经常出现检测失败等情况,有时发送请求后半天才收到返回结果,一直没弄明白怎么回事,还请大神指点啊... 用C#检测网站状态,方法是发送Http code 请求,十个左右网站,但检测时候经常出现检测失败等情况,有时发送请求后半天才收到返回结果,一直没弄明白怎么回事,还请大神指点啊!!
部分代码如下:
url是从xml里面遍历的:
foreach (XmlNode xn in nodeList) //遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型

下面是请求http code 的代码:
bool IsHttpcodeOk(string url)
{
bool result;
try
{
System.GC.Collect(); //垃圾回收,为了解决GetResponse的超时问题

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
// Thread.Sleep(30);//这里一定要Sleep一下否则会造成阻塞
Thread.Sleep(100);//debug

req.KeepAlive = false;
req.Method = "GET";
req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0";

//如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据
req.ServicePoint.Expect100Continue = false;
req.Timeout = 200000;

// ServicePointManager.DefaultConnectionLimit = 20;
ServicePointManager.DefaultConnectionLimit = 200;//debug

req.Method = "HEAD";//设置请求方式为请求头,这样就不需要把整个网页下载下来
//req.Timeout = 2000; //这里设置超时时间,如果不设置,默认为10000
// req.Timeout = 10000; //这里设置超时时间,如果不设置,默认为10000

Console.WriteLine("before getResponse"); //debug
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Console.WriteLine("after getResponse"); //debug

// req.Abort();
if ((int)res.StatusCode == 200)
{
result = true;
// return true;
}
else
{
// res.Close();
// req.Abort();
result = false;
// return false;
}
res.Close();
req.Abort();
}
catch (WebException ex)//使用try catch方式,如果正常,则返回OK,不正常就返回对应的错误。
{
Console.WriteLine(ex.Message);
result = false;
// return false;
//MessageBox.Show(ex.Message);

}
//if(statusCode == 200)
//this.pictureBox1.Image = imageList1.Images[0];

return result;
}
展开
 我来答
cocosip
2015-11-22 · TA获得超过275个赞
知道小有建树答主
回答量:588
采纳率:50%
帮助的人:321万
展开全部
建议使用异步方法去请求,或者使用并行计算Parallel去请求。因为HttpWebRequest是比较耗时的,尤其你一次性请求10个网站,如果中间有一个失败了,那需要的时间会非常长。Thread.Sleep会阻塞当前线程。
广东轻亿云软件
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更... 点击进入详情页
本回答由广东轻亿云软件提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式