se si verificano i sintomi di ciò che Zach ha descritto nei commenti di risposta di Sahil:
come Y5H detto così, aggiunge `_authed = YES' per il metodo didReceiveResponse che fermare il loop infinito. anche se l'autenticazione non ha avuto successo, è necessario trattarla come se fosse autenticata, quindi proverà a caricare la pagina se non è richiesta l'autenticazione, se l'autenticazione è veramente necessaria, quindi fallirà come normale.
per il secondo sintomo dove lo shouldStartLoadWithRequest: spara più volte (a causa di contenuto incorporato sulla pagina web) e sarà solo mostrare l'ultima cosa che ha caricato e non l'intera pagina web, fare questo:
nel shouldStartLoadWithRequest: metodo, aggiungere questo alla parte superiore
if(webview.loading){ //if url requests come through while its loading, its probably embedded content
return YES;
}
edit: questo metodo di cui sopra ha problemi se la pagina completamente carichi, e poi carichi contenuti più incorporato in seguito, rompe con facebook, che è l'unico caso ive visto finora
consentirà agli URL di accedere mentre il sito Web tenta di caricare. Non sono sicuro che sia sicuro assumere che ogni url dopo la richiesta iniziale è contenuto incorporato, ma per i miei scopi sembra funzionare, quindi forse lo sarà anche per te.
Inoltre, utilizzare
- (void) connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
perché
connection:canAuthenticateAgainstProtectionSpace:
connection:didReciveAuthenticationChallenge:
connection:didCancelAuthenticationChallenge:
sono depricated, e per me, non si poteva autenticazione con https siti web che li utilizzano
Non funziona con i POST. Anche una semplice modifica di questo non funziona ancora con i POST. –
Questo non funziona per nessuna richiesta non autenticata (_authed always == NO e viene attivato un ciclo infinito). Anche se correggi il problema, questo non funziona perché shouldStartLoadWithRequest viene generato più volte per ogni pagina web che alla fine risulta nell'ultima richiesta di URL che la visualizzazione web viene caricata come unico contenuto visualizzato nella visualizzazione web. – Zach
aggiungi '_authed = YES' a didReceiveResponse. Questo impedisce loop infinito quando il server non ha inviato richiesta di sfida per qualche motivo. – Seunghoon