分别从客户端和服务端判断远程URL是否存在的方法

来源:互联网 发布:人工智能8个发展趋势 编辑:程序博客网 时间:2024/06/17 15:48

作用:可以判断远程url(如:http://www.eohosoft.com/)是否存在.
作用举例:服务器上某个服务每天生成一个Excel报表用当天日期来命名,如20060320.xsl,用户可以点击一个日历上的日期链接来打开此报表。问题是,当用户点击了一个文件不存在的链接,比如未来的某个日期,就会出现请求页面不存在的错误界面,这是极其不友好的,用户会认为是"灾难性故障"。这时我们就需要判断url是否存在,如不存在,以友好的方式报告错误。

解决方法:

我们可以分别从客户端和服务端来解决此问题。

服务端解决方法:
原理:HttpWebRequest发出对url的请求,HttpWebResponse接受请求,通过对请求状态的判断就知道url是否存在了。
Asp.net服务端实现程序:

using System;
using System.Net;
using System.Web;

class UrlValidation
{
  public static bool UrlExists(string url)
  {
    try
      {
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
        myRequest.Method = "HEAD";
        myRequest.Timeout = 100;
        HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
          return (myResponse.StatusCode==HttpStatusCode.OK);               
      }
      catch (WebException e)
      {
        Response.Write(e.Message);
        return false;
      }
  }
}

客户端解决方法:
原理:通过对Msxml2.xmlhttp对象请求状态的判断来看url是否存在。
客户端实现程序:
<html>
<body>
<input id="demo" value="http://www.eohosoft.com/" size="30" />
<input type="button" onclick="UrlExists(demo.value)" value="check" />
<script language="javascript">
var xmlhttp=new ActiveXObject("Msxml2.xmlhttp");
function UrlExists(url)
{
  xmlhttp.open("get",url,false);
  xmlhttp.send();
  alert(xmlhttp.status=="404" ? "不存在" : "存在");
}
</script>
</body>
</html>

原创粉丝点击