問題:
最近接手一個項目,聊天功能接入的是融云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方進行查看修復。