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