当您事先知道请求需要凭据时,我已经看到了许多 询问(并回答)如何提供凭据的问题。
当我加载一个请求身份验证质询的站点时(以 HTTP 401 响应),我UIWebViewDelegate
只收到以下回调:webView:shouldStartLoadWithRequest:navigationType:
有时webViewDidStartLoad:
(webViewDidStartLoad:
如果我直接导航到该站点似乎会被调用,如果我似乎不会被调用) m 重定向到那里)。
通过覆盖-[NSObject respondsToSelector:]
,接收一些对和的UIWebViewDelegate
调用,这可能很有用,但当然这些是私有 API,可能会让我的应用程序被拒绝。uiWebView:resource:canAuthenticateAgainstProtectionSpace:forDataSource:
uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:
我已经测试了几个不同的带有嵌入式UIWebView
s 的主流应用程序。到目前为止,只有 Chrome 能够正确处理这些身份验证挑战。我什至设置了自己的服务器并验证了 Chrome 仅POST
s 一次。Twitter 和 Tweetbot 失败只是永远显示加载屏幕,就像我的一样。
除了使用第二个推测之外,还有另一种(可能非常hacky)方法来检测这些身份验证挑战NSURLConnection
吗?如果我提出POST
请求,那将POST
是所有事情的两倍,这很糟糕。