Вам придется обработать исключение, но вы можете использовать сопоставление с образцом и свойство Status
в WebException
(которое содержит WebExceptionStatus ) для более легкого управления вашей интерпретацией ответа:
var request = HttpWebRequest.Create(uri);
request.Timeout = timeout;
try
{
var response = (HttpWebResponse) request.GetResponse();
return true;
}
catch (WebException connectionError) when (
connectionError.Status == WebExceptionStatus.NameResolutionFailure ||
connectionError.Status == WebExceptionStatus.Timeout)
{
return false;
}
catch
{
return true;
}
Вот dotnetfiddle , который использует вышеуказанный код, чтобы определить, существует ли конечная точка в 4 различных сценариях ios: (1) URI доступен и возвращает код состояния «ОК», (2) URI не может быть разрешен, (3) URI «существует», но время истекло, и (4) URI существует и возвращает 405.
Вы можете редактировать условные шаблоны в обработке исключений, чтобы заполнить ваши требования для дополнительного сценария ios.