博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSURLErrorDomain Code=-999
阅读量:7129 次
发布时间:2019-06-28

本文共 3713 字,大约阅读时间需要 12 分钟。

前言

今天有一个线上bug,是分配给提供H5的团队的,但是后台查不出来原因。于是让前端iOS帮忙查一查原因。

今天,交给我来帮忙查原因,但是问题在网络好的状态下并不必现,很难去定位问题的根本原因。最后只能到测试旁边连接测试专用的慢网环境,然后才能必现。

刚进入界面时是加载一个H5页面,当点击H5页面上的某个按钮的时候,会通过webview拦截到scheme,然后去走接口请求数据,得到数据后再加载H5页面。此时,走了webview加载失败的回调。

加断点,打印出来的error信息是:

然后,笔者进入NSURLError.h中查看-999代表什么对应的key是什么:

找到了吧!!!NSURLErrorCancelled就是-999,它代表请求被取消的意思。

根本原因

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

因此,在处理Webview的加载失败的回调时,要注意拦截掉被取消的请求。

解决方案

在webview加载失败时,添加如下代码来判断:

最后

如果大家遇到同样的问题,请不要着急,这个bug不一定是后台的,也不一定是前端的,因此彼此应该要互相配合,共同找到问题的根本原因。

由于安卓也有同样的问题,但是复现率没有iOS的高,在笔者找出根本原因后,H5人员与安卓端描述,希望安卓端也能统一改,但是描述不清楚,导致安卓这边有意见。于是叫笔者过来帮忙解释原因,讲了半天,安卓的leader说不可能~不会的~不应该~不影响~

发现跟安卓沟通要是不懂一点安卓,真心容易被人忽悠。当然,最后还是要改的,事实都摆在面前了,还能有什么借口可以逃避!

希望大家在遇到同样的问题时,淡定!沟通协作共同解决问题。

转载地址:http://yprel.baihongyu.com/

你可能感兴趣的文章
Android收起虚拟键盘
查看>>
基于二分查找(折半查找)的时间范围匹配
查看>>
PYTHON1.day10
查看>>
ThinkPHP/---获取今天开始的时间戳与结束的时间戳
查看>>
【OCP-12c】2019年CUUG OCP 071考试题库(79题)
查看>>
Centos 7.0 Linux - 给普通用户加sudo权限
查看>>
OO第二阶段总结
查看>>
eclipse创建的maven项目中使用javafx
查看>>
如何快速熟悉公司的旧代码
查看>>
python+ddt+unittest+excel+request实现接口自动化
查看>>
第八周周记
查看>>
Jni Error(app bug): accessed stale local reference 的另类出现方式
查看>>
myeclipse 解决乱码问题
查看>>
iOS Https 配置 及AFN 相关配置
查看>>
Table-Valued Parameters in SQL Server 2008 (ADO.NET)
查看>>
推荐系统常用的算法参考
查看>>
[Todo] Java并发编程学习
查看>>
Redis cluster学习 & Redis常识 & sort操作
查看>>
mysql 中实现多条数据同时更新
查看>>
2011 ACM/ICPC 成都赛区(为2013/10/20成都现场赛Fighting)
查看>>