問題:
最近接手一個(gè)項(xiàng)目,聊天功能接入的是融云SDK而且版本比較早,出現(xiàn)聊天頁(yè)面圖片不能預(yù)覽大圖問題,提示加載失敗。
控制臺(tái)打印錯(cuò)誤:
Error Domain=xxx.xxx.xxx Code=406 "(null)" // xxx.xxx.xxx表示服務(wù)器域名
集成方式:
集成融云SDK的方式:把RCE 的工程直接導(dǎo)入進(jìn)去,且有二次開發(fā)。所以直接升級(jí)SDK的方式直接pass掉。記得一定不要直接修改第三方的源碼,可以使用繼承、分類或者擴(kuò)展的方式,不然等到問題出現(xiàn)時(shí)就沒法修改代碼了。
排查思路:
前期:
- 在工程中通過替換圖片地址進(jìn)行測(cè)試;
-- 通過測(cè)試網(wǎng)絡(luò)圖片以及其他項(xiàng)目圖片都是能加載成功,只有當(dāng)前項(xiàng)目的地址不成功。 - 自建demo使用SDWebImage的方式加載異常圖片地址;
-- 通過使用SDWebImage加載當(dāng)前項(xiàng)目地址圖片、網(wǎng)絡(luò)圖片、其他項(xiàng)目圖片都能成功。
總結(jié):
- 可能是服務(wù)器問題;
- 也可能是SDK問題;
到這里確定了問題方,接下來繼續(xù)定位到具體的問題點(diǎn),所以繼續(xù)往下看
后期:
因?yàn)橹豢磍og和控制臺(tái)能獲取的信息太少,不足以定位問題,所以需要進(jìn)行抓包。
說到抓包強(qiáng)烈給大家安利一個(gè)軟件Stream,如果是需要抓包手機(jī)APP那么直接在手機(jī)安裝這個(gè)軟件,親測(cè)比Charles簡(jiǎn)單好用很多
抓包測(cè)試思路
- 用SDWebImage搞個(gè)小demo;
- 把異常圖片抓包獲取的header一個(gè)個(gè)的配置到SDWebImage里面;
- 分別運(yùn)行查看圖片能不能顯示,記得一定要清除緩存或者直接刪除demo重新運(yùn)行;
解決:
最后發(fā)現(xiàn)是header中的一個(gè)字段的問題。反饋給服務(wù)器或者SDK方進(jìn)行查看修復(fù)。