判断网页URL是否存在
最近做了一个工具用于测试网页的url是否存在,刚开始接到任务时感觉无从着手,之后就忙着百度,谷歌,但是网上通用的一些方法并不能很好的解决问题,有时候我们需要真对我们所要工作的内容和性质写不同的代码,一般通用测试URL是否存在,都是判断浏览器的响应值是否ok,代码如下:
HttpWebRequest myRequest= (HttpWebRequest)WebRequest.Create(url);
myRequest.Method="HEAD"; //设置提交方式可以为"get","head"等
myRequest.Timeout=10000; //设置网页响应时间长度
myRequest.AllowAutoRedirect=false;//是否允许自动重定向
HttpWebResponse myResponse= (HttpWebResponse)myRequest.GetResponse();
return (myResponse.StatusCode==HttpStatusCode.OK);//返回响应的状态
值得说明的是有时某些URL是权限设置的,所以我们应在上面的语句中加入一句代码:myRequest.UseDefaultCredentials=true;
如果不加的话,可能会使判断失误。
上述这些代码只可以用来判断一些URL是否存在,但是有时候我们需要不光要判断这个URL是否存在,而且还要判断其是否是我们想要的页面,这时我们就得其中html内容的值来做具体判断,也就是对html做遍历,匹配一些字符串,所以上面的这段代码就不适用了,我推荐用下面的这种方法:
WebClient wc=new WebClient();
wc.UseDefaultCredentials=true;
Stream resStream=wc.OpenRead(url); //Open theurl by stream
Encoding enc=Encoding.GetEncoding("GB2312"); //If is the messycode than change uft-8
StreamReader sr=newStreamReader(resStream,enc);
var html=sr.ReadToEnd().ToUpper();
……
在上述代码中html是响应的页面的源码,即html,从中可以用字符串方法来查找是否为我们所需的内容,从而判断url是否存在,这在企业中一般是比较常用的,因为在现实生活不会让你判断一个URL是否存在,一般都是判断一个站点的url和其下面的内容,而不同的站点内容不一致,如果不是我们想要的页面都直接认为其有误,所以这时我们不得不去判断其内容了,所以我建议大家对后一种方法重点掌握。