asp.net(c#) 检测url是否可以跳转

asp.net(c#)我想检测输入的url是否可以跳转到。经过查询努力已经实现。但是,只有当url是类似“www.baidu.com”的时候可以实现,如果url是"111... asp.net(c#)我想 检测输入的url是否可以跳转到。经过查询努力已经实现。但是,只有当url是类似“www.baidu.com”的时候可以实现,如果url是"111.67.34.54"等类似ip地址的时候无法实现。怎么解决当是ip
地址的时候也可以检测?
展开
 我来答
addisjeams3554c97
2013-12-22 · TA获得超过157个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:123万
展开全部
bool b1= UrlExistsUsingHttpWebRequest("http://www.abc.net"); bool b2 = UrlExistsUsingHttpWebRequest("http://1.1.1.1/");
//上面只是一个例子,地址不是真实的Bad Request (Invalid Hostname)
访问ip, 远程服务器返回这个错误, 在程序里面是400错误.web服务器不支持正常访问.
所以你的代码里面要求res.StatusCode == System.Net.HttpStatusCode.OK永远达不到
因此立马错误进入catch返回false(说实话, 你要求检测是否跳转, 那么这段代码是正确的,因为达到效果了,如果你要侦测的是这个地址是否在互联网上存在,不管它是否能访问, 你可以修改一下代码,比如在catch里面再进行一个错误返回的判断.然后根据需要返回false或true)
catch (System.Net.WebException we) { string hbStr_ErrMsg = we.Message; if (hbStr_ErrMsg.Contains("(400)")) { return true; } System.Diagnostics.Trace.Write(we.Message); return false; }

希望能帮到你.
--------------------------------------------
myRequest.Timeout = 100;//这一句100是0.1秒太苛刻了,很多服务器都无法及时响应,建议改为500比较好
如果你觉得遍历访问列表改为500比较浪费时间,不妨用多线程执行
x86下面,一个进程可以有两千多个线程
x64下面,可以拥有超过8000+以上的线程(我只做到这么高的线程测试就终止了)
你完全可以狂开线程,只要你带宽够,这个程序不太占用cpu资源.
syht2000
高粉答主

2013-12-22 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.5亿
展开全部

这个就是检测地址是否存在,以下方法任选一种就行了

private bool UrlExistsUsingHttpWebRequest(string url)
{
 try
 {
  System.Net.HttpWebRequest myRequest =(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
  myRequest.Method = "HEAD"; 
  myRequest.Timeout = 100;
  System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
  return (res.StatusCode == System.Net.HttpStatusCode.OK);
 }
 catch(System.Net.WebException we)
 {
  System.Diagnostics.Trace.Write(we.Message);
  return false;
 }
}
private bool UrlExistsUsingXmlHttp(string url)

 //注意:此方法需要引用Msxml2.dll
 MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
 _xmlhttp.open("HEAD",url,false,null,null);
 _xmlhttp.send("");
 return (_xmlhttp.status == 200 );
}
追问
我就是用的这个,无法检测类似ip地址的url
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式