didFailLoadWithError UIWebview的乐趣
如果你看一下这里的代码:
https://github.com/evernote/evernote-sdk-ios/blob/master/evernote-sdk-ios/internal/ENOAuthViewController.m
在UIWebView中实现OAuth 2.0流程。
作者将此代码用于didFailLoadWithError委托函数:
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102) { return; } if (error.code == NSURLErrorCancelled) { // ignore rapid repeated clicking (error code -999) return; } }
他为什么忽略这两个错误(NSURLErrorCancelled)和错误代码102?
来自WebKitErrorDomain的错误代码102是UIWebView引发的错误,如果其委托从webView:shouldStartLoadWithRequest:navigationType
返回FALSE webView:shouldStartLoadWithRequest:navigationType
。 当使用UIWebView实现OAuth2流时,通常在遇到最终重定向URL时执行此操作,因为这意味着需要隐藏Web视图并开始直接从身份validation中使用令牌在URL中交换访问代码的过程供应商。
第二个错误是我不熟悉的东西,但基于提供的代码注释和此问题的接受答案,我怀疑浏览器或UIWebView中有一些逻辑会自动过滤掉快速重复的点击。 该错误可能是由设计引起的,因此如果他们感兴趣,可以通知代表。
来自维基
102处理(WebDAV; RFC 2518)由于WebDAV请求可能包含许多涉及文件操作的子请求,因此完成请求可能需要很长时间。 此代码表示服务器已收到并正在处理请求,但尚未提供响应。[3] 这可以防止客户端超时并假设请求丢失。
从
WebKitErrorDomain NSError用于指示错误是由WebKit类生成的字符串。
看起来loke web kit错误是内部的,作者不想处理这个错误
UPDATE
没有看到有&&条件。 这意味着如果出现WebKitErrorDomain并且代码是102 – 这意味着Web工具包现在无法显示页面,因为有太多的子请求而你必须等待一下
- iOS开发设置:自定义终端
- IOS链接与缺less架构i386(AdSupport.framework)
- 如何在Swift中水平放置所有iOS设备的标签
- NSNumberFormatter的maximumFractionDigits和maximumSignificantDigits错误
- iOS 8自动单元格高度 – didSelectRowAtIndexPath导致UItableview跳转到顶部
- 无法通过iPhone应用程序中的Oauth 2.0获取Google +的访问令牌
- 为什么不UIImagePickerController委托给我的对象类?
- iOS 9:如何检测用户何时对推送通知请求说“不允许”?
- UICollectionView cellForItemAtIndexPath是零