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

Ios 如何从UIWebView检测身份验证质询?,ios,uiwebview,http-authentication,uiwebviewdelegate,Ios,Uiwebview,Http Authentication,Uiwebviewdelegate,我已经看到,当您事先知道请求需要凭据时,询问(并回答)如何提供凭据 当我加载一个请求身份验证质询的站点时(以HTTP 401响应),我的UIWebViewDelegate只接收以下回调:webView:shouldStartLoadWithRequest:navigationType:有时webViewDidStartLoad:(webViewDidStartLoad:如果我直接导航到该站点,似乎会被调用,如果我被重定向到该站点,则似乎不会被调用) 通过重写-[NSObject responds

我已经看到,当您事先知道请求需要凭据时,询问(并回答)如何提供凭据

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

通过重写
-[NSObject respondsToSelector:]
,UIWebViewDelegate接收一些对
uiWebView:resource:CanAuthenticationAgainstProtectionSpace:forDataSource:
uiWebView:resource:didReceiveAuthenticationChallenge:fromDataSource:
的调用,这些调用可能很有用,但当然它们是私有API,可能会导致我的应用被拒绝

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

除了使用第二个推测性的
NSURLConnection
,是否还有其他(可能是非常黑客的)方法来检测这些身份验证挑战?如果我发出
POST
请求,这将使所有内容加倍,这是不好的


。请复制它。

您可以在自己的
NSURLConnection
中加载所有请求,然后将数据作为字符串馈送到webview。这将允许您截取连接并仍然获得本机的
UIWebView
呈现。我不确定它是否能够将数据流式传输到web中当它到达时查看,但希望我们这里没有谈论太多的数据。

。它看起来也是关于如何正确实现NSURL协议的最完整的文档。

谢谢。这就是我现在正在做的。我很想在这里或Twitter上听到它是如何工作的,特别是如果您尝试增量加载HTML字符串。我不打算做增量加载。一旦开始,我会尝试写博客。如果页面使用XHR或iFrame,这种方法就不起作用。我已经重写了系统,使用NSURL协议,似乎可以处理这种情况。我刚刚找到一些解决此问题的苹果示例代码。请参阅感谢制作雷达request-我弄错了!我的示例代码有问题。我的一个NSURLConnections停止接收回调。但是,这似乎仍然是最好的选择。我已经向DTS提交了TSI,希望苹果能帮助我解决问题。我的问题发生是因为我有另一个使用
NSURLConnection的
NSURLConnection
上,它正在拦截
UIWebView
呼叫。在与Apple DTS通话后,听起来您无法将基于
NSURLConnection
NSURLProtocol
UIWebView
一起使用。Apple的示例代码使用了
NSURLSession
,所以这很好。