如果判断一个链接的存在.老问题问法,知道的人请进来一下。

离子漂浮物 2004-10-03 04:41:57
还是老问题,判断一个链接地址是否存在。我查了以前的贴子都说是用XMLHTTP请求一次来确认链接的文件是否存在。
  但是XMLHTTP的测试方式存在有巨大的代价,因为XMLHTTP的请求必须将被请求的文件下载完毕后才能返回结果。如果要测试的连接是一个比较大的文件(如:1M或100M以上的东西)的话,就会需要大量的内存和时间来等待,这个对于只是想知道它存不存在的目的来说,代价太大了。
  我曾想过用XMLHTTP来请求,然后链接成功后主动断开请求,不过似乎XMLHTTP没有这样的方式..呵呵。

  在翻看以前的贴子时我看到到一个叫StatusCode的方法,也尝试找过这个方法的说明..不过,找到的都是ASP.net的资料。(哭啊,现在研究ASP的网站好象都被ASP.net所代替了..)

  谁能告诉我一个比较可行的方法?谢谢了。
...全文
364 点赞 收藏 7
写回复
7 条回复
离子漂浮物 2004年10月04日
太感谢孟子E章了...
回复 点赞
孟子E章 2004年10月03日
<script>
function checkStatus(url)
{
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
XMLHTTP.open("HEAD",url,false)
XMLHTTP.send()
return XMLHTTP.status==200
}
alert(checkStatus("http://download.microsoft.com/download/8/b/4/8b4addd8-e957-4dea-bdb8-c4e00af5b94b/NDP1.1sp1-KB867460-X86.exe"))
</script>

当然改成asp的写法完全没有问题的
回复 点赞
孟子E章 2004年10月03日
XMLHTTP的Head方法是不用全部返回的
function checkStatus(url)
{
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
XMLHTTP.open("HEAD",url,false)
XMLHTTP.send()
return XMLHTTP.status==200
}
alert(checkStatus("http://dotnet.aspx.cc/"))
回复 点赞
lyflying 2004年10月03日
gz
回复 点赞
AVAmyZ 2004年10月03日
找一个测试网速的页面,看看代码就明了!
回复 点赞
Struggling 2004年10月03日
try!

<html>
<head>
<title>利用XMLHTTP检测网址及探测服务器类型</title>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name="Generator" content="Microsoft FrontPage 5.0">
<meta name="Author" content="JnKc">
<meta name="Keywords" content="">
</head>
<body>
<input type="text" id="jnkcInput" value="http://www.csdn.net" size="50"><button id="chk">检测</button>
<div id="jnkc_show"></div>
<SCRIPT LANGUAGE="VBScript">
Dim i,jnkcUrl,jnkcHTML,jnkcStatus,jnkcServer
Function chk_onClick()
jnkcUrl = jnkcInput.value
Call GetDetail
i = i+1
jnkc_show.innerHTML = "<hr><pre><font color=red>" & i & "、" & jnkcUrl & "</font><br/>" & jnkcStatus & "</pre>" & jnkc_show.innerHTML
End Function

Dim jnkcXMLHTTP

Sub GetDetail
Set jnkcXMLHTTP = CreateObject("Microsoft.XMLHTTP")
jnkcXMLHTTP.OnReadyStateChange = GetRef("GetStatus")
jnkcXMLHTTP.Open "GET", jnkcUrl, False
On Error Resume Next
jnkcXMLHTTP.Send
Set jnkcXMLHTTP = Nothing
End Sub

Sub GetStatus
If jnkcXMLHTTP.ReadyState <> 4 Then
Exit Sub
End If
If jnkcXMLHTTP.Status = 404 Then
jnkcStatus = "该网页不存在!"
ElseIf jnkcXMLHTTP.Status < 200 Then
jnkcStatus = "客户端错误,信息:" & CStr(jnkcXMLHTTP.Status) & " " & jnkcXMLHTTP.StatusText
ElseIf jnkcXMLHTTP.Status < 300 Then
jnkcStatus = "成功,该网页能访问。"
ElseIf jnkcXMLHTTP.Status < 400 Then
jnkcStatus = "重定向,信息:" & CStr(jnkcXMLHTTP.Status) & " " & jnkcXMLHTTP.StatusText
ElseIf jnkcXMLHTTP.Status < 500 Then
jnkcStatus = "客户端错误,信息:" & CStr(jnkcXMLHTTP.Status) & " " & jnkcXMLHTTP.StatusText
ElseIf jnkcXMLHTTP.Status < 600 Then
jnkcStatus = "服务器错误,信息:" & CStr(jnkcXMLHTTP.Status) & " " & jnkcXMLHTTP.StatusText
Else
jnkcStatus = "域名不可用或网络连接错误,信息:" & CStr(jnkcXMLHTTP.Status) & " " & jnkcXMLHTTP.StatusText
End If
If jnkcXMLHTTP.Status < 600 Then Call GetServer
End Sub
Sub GetServer
jnkcServer = jnkcXMLHTTP.GetResponseHeader("Server")
If jnkcServer <> "" Then
jnkcStatus = jnkcStatus & "<br/>HTTP服务器:" & jnkcServer
End If
jnkcStatus = "<b>" & jnkcStatus & "</b><br/>所有反馈信息:<br/>"& jnkcXMLHTTP.GetAllResponseHeaders
End Sub
</SCRIPT>
</body>
</html>
回复 点赞
DeltaCat 2004年10月03日
你的链接是指什么? 纯网页连接 还是 包括下载的文件的链接也算?
回复 点赞
发动态
发帖子
ASP
创建于2007-09-28

1.9w+

社区成员

35.7w+

社区内容

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区公告
暂无公告