用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;
} 展开
部分代码如下:
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;
} 展开
1个回答
广东轻亿云软件
2024-05-14 广告
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更...
点击进入详情页
本回答由广东轻亿云软件提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询