Подтвердить что ты не робот

Проверьте, доступен ли URL-адрес - Помощь в оптимизации класса

net 4 и С#.

Мне нужен класс, способный возвращать значение Bool, если Uri (string) возвращает коды состояния HTTP 200.

В настоящий момент у меня есть этот код (он работает, пытаясь увидеть, возможно ли подключение к 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;
        }
4b9b3361

Ответ 1

Хорошо, во-первых, было бы лучше иметь оператор using для вашего ответа, а не просто позвонить Close - в этом случае нет большой разницы, но в общем случае using могут быть выполнены инструкции.

Что касается проверки состояния результата - просто отрисуйте ответ на HttpWebResponse, а затем используйте свойство StatusCode. Что-то вроде этого:

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