Widziałem, manyquestions, które pytają (i odpowiedz), jak dostarczyć poświadczenia, gdy wiesz wcześniej, że wniosek wymaga ich.Jak wykryć wyzwanie uwierzytelnienia z interfejsu UIWebView?
Kiedy załadować stronę, która żąda wyzwanie uwierzytelnienia (odpowiada HTTP 401), mój UIWebViewDelegate
otrzymuje jedynie następujące wywołania zwrotne: webView:shouldStartLoadWithRequest:navigationType:
i czasami webViewDidStartLoad:
(webViewDidStartLoad:
wydaje się być wywołana jeśli poruszać się bezpośrednio do serwisu, i to wydaje się nie być wywoływany, jeśli jestem tam przekierowany).
nadrzędnymi -[NSObject respondsToSelector:]
The UIWebViewDelegate
odbiera kilka telefonów do uiWebView:resource:canAuthenticateAgainstProtectionSpace:forDataSource:
i uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:
, co może być przydatne, ale oczywiście te są prywatne API i prawdopodobnie się moja aplikacja odrzucona.
Przetestowałem kilka różnych aplikacji głównego nurtu z wbudowanymi UIWebView
s. Jak dotąd tylko Chrome prawidłowo obsługuje te problemy z uwierzytelnianiem. Skonfigurowałem nawet własny serwer i sprawdziłem, czy Chrome jest tylko jeden raz. Twitter i Tweetbot nie wyświetlają ekranu ładowania, tak jak moje.
Czy istnieje inny (prawdopodobnie bardzo hacky) sposób na wykrycie tych wyzwań związanych z uwierzytelnianiem innych niż użycie drugiego spekulacyjnego NSURLConnection
? Jeśli zgłoszę żądanie POST
, wszystko będzie podwójne, co jest złe.
I've added a radar to request an enhancement to UIWebView for this. Powiel go.
Dzięki za zgłoszenie radaru - oszukałem! –