问题:
最近接手一个项目,聊天功能接入的是融云SDK而且版本比较早,出现聊天页面图片不能预览大图问题,提示加载失败。
控制台打印错误:
Error Domain=xxx.xxx.xxx Code=406 "(null)" // xxx.xxx.xxx表示服务器域名
集成方式:
集成融云SDK的方式:把RCE 的工程直接导入进去,且有二次开发。所以直接升级SDK的方式直接pass掉。记得一定不要直接修改第三方的源码,可以使用继承、分类或者扩展的方式,不然等到问题出现时就没法修改代码了。
排查思路:
前期:
- 在工程中通过替换图片地址进行测试;
-- 通过测试网络图片以及其他项目图片都是能加载成功,只有当前项目的地址不成功。 - 自建demo使用SDWebImage的方式加载异常图片地址;
-- 通过使用SDWebImage加载当前项目地址图片、网络图片、其他项目图片都能成功。
总结:
- 可能是服务器问题;
- 也可能是SDK问题;
到这里确定了问题方,接下来继续定位到具体的问题点,所以继续往下看
后期:
因为只看log和控制台能获取的信息太少,不足以定位问题,所以需要进行抓包。
说到抓包强烈给大家安利一个软件Stream,如果是需要抓包手机APP那么直接在手机安装这个软件,亲测比Charles简单好用很多
抓包测试思路
- 用SDWebImage搞个小demo;
- 把异常图片抓包获取的header一个个的配置到SDWebImage里面;
- 分别运行查看图片能不能显示,记得一定要清除缓存或者直接删除demo重新运行;
解决:
最后发现是header中的一个字段的问题。反馈给服务器或者SDK方进行查看修复。
网友评论