专栏首页freesan44webview 中的NSURLErrorDomain Code=-999处理

webview 中的NSURLErrorDomain Code=-999处理

摘要:替换UIWebview为WKWebview时,遇到一个怪异的现象,webview的二级界面回到一级界面时,一级重新渲染时,会直接抛错;

分析问题:

因为,我们的app支持iOS8以上,考虑到UIWebview的内存使用要比WKWebview的高、加载速度慢,同时,对WKWebview的高达60fps的滚动刷新率以及内置手势充满了羡慕,所以脑袋一抽,撸起袖子直接替换掉原来的UIWebview;这个过程中出现了这个莫名其妙的问题(进入一个H5加载的界面,点击内容,跳转到另外一个H5界面,然后,点击H5的导航返回按钮,上重新加载上一个界面,直接告知加载失败); 加断点,打印出来的error信息是:

Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLKey=https://xxx.xx.xx/me.jsp, _WKRecoveryAttempterErrorKey=, NSErrorFailingURLStringKey=https://xxx.xx.xx/me.jsp}

然后,Google了一圈没有找到合理的解释,于是去查看NSURLError中-999代表的是什么:

图片.png

图片.png

-999 就是 NSURLErrorCancelled,它代表请求被取消的意思

问题原因:

出现NSURLErrorDomain Code=-999的根本原因是什么呢?其实就是因为webview在之前的请求还没有加载完成,下一个请求发起了,此时webview会取消掉之前的请求,因此会回调到失败这里。 因此,在处理Webview的加载失败的回调时,要注意拦截掉被取消的请求。

解决方案:

在失败的方法里:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用GCD线程组与GCD信号量将异步线程转换为同步线程

    同时获取两个网络请求的数据,但是网络请求是异步的,我们需要获取到两个网络请求的数据之后才能够进行下一步的操作,这个时候,就是线程组与信号量的用武之地了.

    freesan44
  • iOS开发:下架App的步骤

    6.如想重新上架,点击“在所在区域供应”,选择后可点击后面的编辑选择销售区域,然后点击保存就重新上架了。

    freesan44
  • LeetCode 657. 机器人能否返回原点

    在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

    freesan44
  • .NET轻量级DBHelpers数据访问组件

    跟着阿笨一起玩NET
  • 我潜入清华神秘实验室,用脑机接口写了两句诗

    量子位
  • python selenium2 常用方法

    完整路径 C:\Python27\Lib\site-packages\selenium\webdriver\remote\webdrive...

    苦叶子
  • 获取application server 主机名(host name)和端口号(port)的FM TH_GET_VIRT_HOST_DATA

    protocol 传1得到基于http的host name和port number:

    Jerry Wang
  • Go 语言 Web 编程系列(十三)—— 获取用户请求数据(上)

    在 PHP 中,可以直接通过全局变量 $_GET 和 $_POST 快速获取 GET/POST 请求数据,GET 请求数据主要是 URL 查询字符串中包含的参数...

    学院君
  • Maven经验分享(一)安装部署

    在安装Maven之前,首先要确认你已经正确安装了JDK。Maven可以运行在JDK 1.4及以上的版本上。本书的所有样例都基于JDK 5及以上版本

    一笠风雨任生平
  • Maven经验分享(一)安装部署

    在安装Maven之前,首先要确认你已经正确安装了JDK。Maven可以运行在JDK 1.4及以上的版本上。本书的所有样例都基于JDK 5及以上版本

    一笠风雨任生平

扫码关注云+社区

领取腾讯云代金券