检查是否可以访问URL - 帮助优化类

时间:2011-03-21 13:44:23

标签: c# asp.net uri

net 4和c#。

如果Uri(字符串)返回HTTP status codes 200,我需要一个能够返回Bool值的Class。

目前我有这个代码(它使用try来查看是否可以连接到Uri)但我希望用“HttpStatusCode.OK”来实现。

  • 你知道更好的方法吗?

感谢。

public static bool IsReachableUri(string uriInput)
        {
            // Variable to Return
            bool testStatus;
            // Create a request for the URL.
            WebRequest request = WebRequest.Create(uriInput);
            request.Timeout = 15000; // 15 Sec

            WebResponse response;
            try
            {
                response = request.GetResponse();
                testStatus = true; // Uri does exist                 
                response.Close();
            }
            catch (Exception)
            {
                testStatus = false; // Uri does not exist
            }
            // Result
            return testStatus;
        }

1 个答案:

答案 0 :(得分:30)

首先,最好为您的回复设置using语句,而不是仅仅调用Close - 在这种情况下,没有太大区别,但一般来说using语句是要走的路。

至于测试结果状态 - 只需将响应转换为HttpWebResponse,然后使用StatusCode属性。像这样:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Timeout = 15000;
request.Method = "HEAD"; // As per Lasse's comment
try
{
    using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
    {
        return response.StatusCode == HttpStatusCode.OK;
    }
}
catch (WebException)
{
    return false;
}