请教vb如何实现检测一个URL是否有效?
请教vb如何实现检测一个URL是否有效?
网站形式是任意的
比如http://www.xxxx.com/ssssss.html
或者http://xxx.xom/sss.asp
[解决办法]
先使用InternetOpen打开网络,然后使用InternetConnect建立一个网络连接,连接协议为INTERNET_SERVICE_HTTP,用户名为anonymous,密码为空,再使用InternetOpenFile打开URL,如果失败,则表示该URL不存在,最后使用InternetCloseHandle关闭文件句柄、网络连接句柄和网络句柄。
虽然还有一个更简单的函数InternetOpenUrl,但由于URL不存在时此函数会出现阻塞,故不推荐使用。
[解决办法]
这种东西要根据具体的站点而定的,并不是能笼统地适用。
因为按标准的站点配置处理来说,如果他的网站没有那个文件或URL地址,WEB服务器会返回404或400或401等这些错误号在HTTP头,那么便可通过HTTP头的信息来识别那个URL是否有效。
但是有些WEB站点却对这一块作了特殊处理,比如没有哪个URL地址,他同样返回的是200,只是他的内容却是他自定义的错误提示页面或干脆直接转向到他网站的首页内容,所以要说能够笼统的对所有URL进行是否有效的判断是不可能的。
就标准的IIS6配置来说,如果要识别URL有效性,通过HTTP头就可以识别了,下面我举个例子。
'以下是VB采用XMLHTTP对象访问远程URL,然后判断访问状态的一个范例Private Sub Command1_Click() Dim XMLObject As Object Set XMLObject = CreateObject("Microsoft.XMLHTTP") XMLObject.Open "GET", "http://www.xxxx.com/ssssss.html", False XMLObject.send "" If XMLObject.Status = 200 Then MsgBox "网页存在。", 64, "提示" Else MsgBox "网页不存在。", 64, "提示" End If Set XMLObject = NothingEnd Sub
[解决办法]
这要看你实际用途是什么
简单的判断3楼的方法不错
如果要精确些可以参考一下http协议中的响应代码
一般返回4xx(请求错误)与5xx(服务器错误)才表示在浏览器中打开时是错误页面
但3楼使用的方法可能会出现一个问题
XMLHTTP对3xx响应代码,好像无视
不知道是不是我以前使用异步方法的原因
具体可以测试一下Http://BBS.CSDN.NET
这个地址返回的是302转向至http://community.csdn.net/的
当时XMLHTTP的State属性一直是0,一般属性值为READY_STATE_COMPLETE时,才能对XMLHTTP中返回的信息进行读写..
后来是利用ServerXMLHTTP解决的,ServerXMLHTTP好像是可以自动重定向的
-----------------------
刚才又看了下3楼。
百度不存在页是返回的也应该是3xx,然后重定向至百度自定义页面的.那客户端应该会有信息呀
不知道XMLHTTP是怎么处理好的.- -! 也可能是Community.Csdn.Net响应信息不一样/也许是XMLHTTP的版本不同相应的处理方法也不一样.. 不深究了.
不贴代码了.前些天封装了一个ServerXMLHTTP
可以参考一下...http://blog.csdn.net/SilenceNet/archive/2009/06/07/4249329.aspx