si usted está experimentando síntomas de lo que Zach describe en los comentarios de la respuesta de Sahil:
como Y5H dijo así, agrega `_authed = YES' para el método didReceiveResponse que detendrá el bucle infinito. incluso si la autenticación no fue exitosa, debe tratarla como si hubiera sido autenticada, por lo que intentará continuar cargando la página si no se requiere autenticación, si realmente se requiere autenticación, entonces fallará como siempre.
para el segundo síntoma donde el shouldStartLoadWithRequest: dispara varias veces (debido al contenido incrustado en la página web) y que sólo se mostrará lo último que se carga y no toda la página Web, haga lo siguiente:
en el shouldStartLoadWithRequest: método, añadir esto a la parte superior
if(webview.loading){ //if url requests come through while its loading, its probably embedded content
return YES;
}
edición: este método anterior tiene problemas si la página se cargue completamente, y luego cargas más contenido incrustado después, rompe con facebook el que se ve el único caso que he hasta ahora
Esto permitirá que las URL pasen mientras el sitio web está intentando cargar. No estoy seguro de si es seguro suponer que cada url después de la solicitud inicial es contenido incrustado, pero para mi propósito, pareció funcionar, por lo que tal vez sea también para usted.
También, el uso
- (void) connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
porque
connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:
están depricated, y para mí, que no podían autenticarse con sitios web https usarlos
No funciona con POST. Incluso una simple modificación de esto aún no funciona con los POST. –
Esto no funciona para ninguna solicitud no autenticada (_authed always == NO y se activa un ciclo infinito). Incluso si resuelve ese problema, esto aún no funciona porque shouldStartLoadWithRequest se activa varias veces por página web, lo que finalmente da como resultado que la última solicitud de URL que carga la vista web sea el único contenido que se muestra en la vista web. – Zach
agrega '_authed = YES' a didReceiveResponse. Esto evita el bucle infinito cuando el servidor no envió la solicitud de desafío por algún motivo. – Seunghoon