если вы испытываете симптомы того, что Зак описал в комментариях к ответу Сахила:
как также сказал y5h, добавьте `_authed = YES 'к методу didReceiveResponse, который остановит бесконечный цикл. даже если аутентификация не была успешной, вам нужно относиться к ней так, как если бы она была аутентифицирована, поэтому он попытается продолжить загрузку страницы, если аутентификация не требуется, если аутентификация действительно требовалась, тогда она просто потерпит неудачу, как обычно.
для второго симптома, когда shouldStartLoadWithRequest: срабатывает несколько раз (из-за встроенного содержимого на веб-странице), и он просто покажет последнее загруженное, а не всю веб-страницу, сделайте следующее:
в методе shouldStartLoadWithRequest: добавьте это в начало
if(webview.loading){ //if url requests come through while its loading, its probably embedded content
return YES;
}
edit: этот метод выше имеет проблемы, если страница полностью загружается, а затем загружает больше встроенного контента, прерывается с facebook, который является единственным случаем, который я видел до сих пор
это позволит URL-адресам проходить, пока веб-сайт пытается загрузиться. Я не уверен, можно ли предположить, что каждый URL-адрес после первоначального запроса представляет собой встроенный контент, но для моих целей это, похоже, сработало, так что, возможно, это будет и для вас.
также используйте
- (void) connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
так как
connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:
являются устаревшими, и для меня вы не могли аутентифицироваться на https-сайтах, используя их
person
Fonix
schedule
18.07.2013