如何从UIWebView检测身份验证质询?

Hea*_*ers 6 http-authentication uiwebview ios uiwebviewdelegate

当你事先知道请求需要它时,我已经看到许多 问题(并回答)如何提供凭证.

当我加载请求身份验证质询的站点时(使用HTTP 401响应),我UIWebViewDelegate只收到以下回调:webView:shouldStartLoadWithRequest:navigationType:有时webViewDidStartLoad:(webViewDidStartLoad:如果我直接导​​航到该站点,似乎会被调用,如果我',它似乎不会被调用m重定向那里).

通过覆盖-[NSObject respondsToSelector:],UIWebViewDelegate接收一些调用uiWebView:resource:canAuthenticateAgainstProtectionSpace:forDataSource:uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:,这可能是有用的,但当然这些是私有API,可能会让我的应用程序被拒绝.

我用嵌入式UIWebViews 测试了一些不同的主流应用程序.到目前为止,只有Chrome正确处理这些身份验证挑战.我甚至已经设置了自己的服务器并验证了Chrome只有POST一次.Twitter和Tweetbot失败只是永远显示加载屏幕,就像我的.

除了使用第二个推测之外,还有另一种(可能是非常hacky)方法来检测这些身份验证挑战NSURLConnection吗?如果我提出POST请求,那将POST是一切,这是不好的.

为此,我添加了一个雷达来请求增强UIWebView.请复制它.

Hea*_*ers 6

Apple现在有解决此问题的示例代码.它看起来也是如何正确实现NSURLProtocol的最完整的文档.