NET 4和C#。

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

目前,我有这段代码(尝试使用它来尝试是否可以连接到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;
            }
    

    最佳答案

    好吧,首先最好是为您的响应提供一个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;
    }
    

    10-06 13:32