Проверьте, доступен ли 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;
}
Ответы
Ответ 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;
}