Ho visto manyquestions che chiede (e rispondo) come fornire le credenziali quando si sa in anticipo che la richiesta le richiede.Come posso rilevare una richiesta di autenticazione da un UIWebView?
Quando carico un sito che richiede una richiesta di autenticazione, (risponde con HTTP 401), la mia UIWebViewDelegate
riceve solo le seguenti callback: webView:shouldStartLoadWithRequest:navigationType:
e talvolta webViewDidStartLoad:
(webViewDidStartLoad:
sembra essere chiamato se ci si dirige direttamente al sito, ed è sembra non essere chiamato se sono reindirizzato lì).
Con l'override -[NSObject respondsToSelector:]
, il UIWebViewDelegate
riceve alcune chiamate a uiWebView:resource:canAuthenticateAgainstProtectionSpace:forDataSource:
e uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:
, che potrebbe essere utile, ma naturalmente questi sono API privato e sarà probabilmente ottenere la mia app respinto.
Ho provato alcune diverse app tradizionali con incorporato UIWebView
s. Finora, solo Chrome gestisce correttamente queste sfide di autenticazione. Ho persino impostato il mio server e convalidato quel Chrome solo POST
s una volta. Twitter e Tweetbot non riescono a mostrare la schermata di caricamento per sempre, proprio come la mia.
C'è un altro modo (probabilmente molto hacky) per rilevare queste sfide di autenticazione oltre all'utilizzo di un secondo speculativo NSURLConnection
? Se faccio una richiesta POST
, questo raddoppierà- POST
tutto ciò che è male.
I've added a radar to request an enhancement to UIWebView for this. Si prega di duplicarlo.
Grazie per aver richiesto il radar: l'ho ingannato! –