如何检查页面是否存在而不将其包装在try catch中
Dim myWebResponse As HttpWebResponse = CType(myWebRequest.GetResponse(), HttpWebResponse)
如果页面不存在,那么当myWebRequest.GetResponse(
) 触发时我会得到 404 异常。
是不是有类似 myWebRequest.DoesPageExist() 的东西返回 true 或 false 或状态?
这是不可能的。
要检查页面是否存在,您必须执行 Web 请求,如果页面不存在,服务器将返回错误代码。如果页面存在,则服务器返回页面内容。所有这些都是一个服务器请求中的一个,如果您先检查,您将需要两个服务器请求,这是低效的。
当你执行一个 web 请求时,你应该总是捕获异常,因为很多意想不到的事情可能会发生。不仅该页面不存在,连接可能超时或中断,服务器本身已关闭......而且您应该捕获所有这些异常。
你试过用ajax做吗?(本示例使用 jQuery)
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
这是使用 jquery 检查 404 状态的代码
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
取自: