检查 url 是否存在,对某些 url 不起作用
Checking if a url exist, not working for some urls
我正在使用 HttpWebRequest 检查 url 是否存在。
问题是,它不适用于某些 url。
示例:
http://www.gkrs.no/
https://www.politi.no/kripos/statistikk/narkotika/
这些 url 存在。但是在代码中显示为不存在。
它适用于我正在检查的大多数 url,只是这两个导致了一些问题。有没有人有任何我仍然需要检查的例子。也许他们的 headers.
有什么不同
GET 和 HEAD 两种请求方式我都试过了。
我还是编程新手,可能需要更简单的解释。抱歉英语不好,不是我的母语。
任何帮助,将不胜感激。
internal static bool IsValidLenke(string url){
if (String.IsNullOrEmpty(url))
return false;
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
//Any exception will returns false.
return false;
}
}
http://www.gkrs.no/ 阻止您,因为您没有提供有效的用户代理。
https://www.politi.no/kripos/statistikk/narkotika/ 不接受 "HEAD",然后向您发送疯狂的重定向,因此您需要一个 cookie 容器以避免陷入无限循环。
做这样的事情:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.MaximumAutomaticRedirections = 100;
request.AllowAutoRedirect = true;
request.CookieContainer = new CookieContainer();
request.Method = "GET";
request.UserAgent = " Mozilla/5.0 (Windows NT 10.0; Win64; x64)";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();
我正在使用 HttpWebRequest 检查 url 是否存在。
问题是,它不适用于某些 url。
示例:
http://www.gkrs.no/
https://www.politi.no/kripos/statistikk/narkotika/
这些 url 存在。但是在代码中显示为不存在。
它适用于我正在检查的大多数 url,只是这两个导致了一些问题。有没有人有任何我仍然需要检查的例子。也许他们的 headers.
GET 和 HEAD 两种请求方式我都试过了。
我还是编程新手,可能需要更简单的解释。抱歉英语不好,不是我的母语。
任何帮助,将不胜感激。
internal static bool IsValidLenke(string url){
if (String.IsNullOrEmpty(url))
return false;
try
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
//Any exception will returns false.
return false;
}
}
http://www.gkrs.no/ 阻止您,因为您没有提供有效的用户代理。 https://www.politi.no/kripos/statistikk/narkotika/ 不接受 "HEAD",然后向您发送疯狂的重定向,因此您需要一个 cookie 容器以避免陷入无限循环。
做这样的事情:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.MaximumAutomaticRedirections = 100;
request.AllowAutoRedirect = true;
request.CookieContainer = new CookieContainer();
request.Method = "GET";
request.UserAgent = " Mozilla/5.0 (Windows NT 10.0; Win64; x64)";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
response.Close();