NSURLConnection автоматическое прямое соединение, если загрузка proxy.pac не удалась - PullRequest
0 голосов
/ 27 января 2011

У меня есть приложение, которое использует NSURLConnection для связи с веб-сервером. Если у меня включен параметр автоматической настройки прокси-сервера и URL-адрес в этом параметре указывает на недоступный сервер, моя попытка NSURLConnection завершится неудачно с ошибкой тайм-аута. Если я сделаю запрос еще раз, NSURLConnection попытается установить прямое соединение (он должен отметить, что прокси-сервер не выполнен) и запрос будет успешным.

Я заметил, что Safari попытается установить прямое соединение, как только прокси отключится, но это происходит автоматически. Я скачал последний ночной источник WebKit, собрал его и попытался выяснить, как это сделать. Что касается жизни, я не могу понять, как WebKit получает такое поведение. Он создает NSURLConnection, но -connection: didFailWithError: никогда не вызывается. По истечении времени ожидания прокси вызывается -connection: didReceiveResponse: делегат, поскольку он установил прямое соединение. Ничто в коде WebKit, которое я вижу, не обнаруживает этот тайм-аут прокси и вызывает перезагрузку. Это должно происходить в NSURLConnection / NSURLRequest.

Как заставить NSURLConnection автоматически повторить прямое соединение при сбое прокси? Я хочу, чтобы он работал точно так же, как в Safari / WebKit.

1 Ответ

0 голосов
/ 28 января 2011

Я понял это. Это было связано с интервалом ожидания запроса. Интервал времени ожидания по умолчанию для NSURLRequest составляет 60 секунд. Первоначальное время ожидания прокси-сервера занимало почти 90 секунд, поэтому NSURLConnection не возвращалось к прямому соединению. Как только я увеличил время ожидания в запросе, оно начало работать.

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