Соответствует ли SCNetworkReachability настройкам прокси-сервера HTTP? - PullRequest
4 голосов
/ 02 сентября 2011

Боюсь, что ответом будет «Нет», но я надеюсь, что кто-то может дать точный ответ, поскольку он не задокументирован в текущей документации iOS SDK.

Мы наблюдаем случай, когда NSURLConnection может подключиться к https://mysite.com через HTTP-прокси, но из-за способа настройки локального DNS в этом случае поиск DNS для mysite.com не удастся. В этом случае кажется, что SCNetworkReachability пытается выполнить поиск DNS для mysite.com и завершается неудачей. Между тем NSURLConnection может подключиться.

Мы включили пример кода Apple Reachability в наше приложение и вызываем SCNetworkReachabilityCreateWithName с mysite.com.

1 Ответ

2 голосов
/ 06 января 2012

Я не могу дать однозначного ответа, но могу предоставить более эмпирическое доказательство и некоторое обоснование того, что ответ НЕТ.У меня есть приложение, которое использует SCNetworkReachabilityGetFlags для проверки доступности определенного хоста (например, www.mysite.com).В зависимости от этой проверки достижимости, он затем использует [NSMutableData dataWithContentsOfURL:] для загрузки данных.

Приложение всегда работало нормально, но в последнее время я занимался некоторым кодированием на работе, где доступ к сети осуществляется через корпоративный HTTP-прокси,При запуске приложения в iOS Simulator (который использует настройки прокси-сервера, настроенные на моем Mac), проверка доступности не проходит.Сначала я подумал, что, возможно, симулятор iOS не использует настройки прокси-сервера Mac, но Mobile Safari в симуляторе работал нормально.Поэтому я удалил проверку доступности в своем приложении, и звонок на [NSMutableData dataWithContentsOfURL:] работал нормально.Это может указывать на то, что SCNetworkReachability не учитывает настройки прокси.

Подумав об этом, вероятно, это правильное поведение, если вы рассматриваете SCNetworkReachability как работающий на уровне TCP / IP, а не на уровне HTTP, точно так же, как ping google.com на Mac / PC позадикорпоративный брандмауэр тоже не работает.Прокси-сервер HTTP (как следует из названия) предназначен для протокола HTTP, а не для всего стека TCP / IP.

Прочитав ответы на этот вопрос о достижимости Я склонен к бинумоя проверка доступности вообще.Хотя до сих пор это было проблемой в симуляторе, в других ситуациях это может быть проблематично (например, в публичной точке доступа WiFi, требующей аутентификации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...