關於Retrofit 2.0使用中遇到的問題

一、說明

本文主要是記錄了在使用retrofit 2.0+的版本中遇到的問題,以免後面忘記了,也給遇到同樣問題的兄弟提個醒,避免入坑,後續有問題會持續更新

二、問題描述

  1. 因爲對retrofit做了封裝,然後也沒有打印返回error信息,導致一個很詭異的問題就是請求一個接口一直沒有任何反應,日誌也沒顯示異常,找了一下午沒找到原因,而且發現同一個接口不同地方調用,請求參數不同,有的成功,有的沒反應,後來對響應的封裝做了移除,直接new了一個consummer來接受響應參數,結果應用直接崩潰了,信息如下:

............

Field map contained null value for key 'projectId'.....

...............

終於有反應了,這是好事情,趕緊把參數中爲null的改爲“”,再試一次,結果就正常了,真是坑啊,查了官方更新日誌才知道,2.0以後Field 和FieldMap的入參都不允許爲null

A {@code null} value for the map, as a key, or as a value is not allowed.

官方說明鏈接:https://github.com/square/retrofit/commit/10ff3d97faadcd6f716447d3376f9f51992e44dd

這個是着實有點坑的,不對string類型的變量進行賦值,在不同的調用場景下,某些變量在請求時就很可能變成null了,當封裝了retrofit,而且在請求時又恰巧沒有打印返回的error信息,出現的現象就是請求一個接口和沒請求一樣,點了不會有任何反應,使用okhttp自帶的日誌攔截器也不會打印任何信息,這個一定要注意,不處理null值要麼沒反應要麼就是crash

2.關於請求URL處理上的問題

這個問題應該很多人都遇到了,網上也有很多人給瞭解決方案

@Path("url")String url  用這種方式註解url來替換請求方式中的相對路徑時,部分字符在請求時會被進行編碼 
@Url String url  直接使用這個就沒有這個問題了

還有一點就是在請求時baseUrl中“/”和相對路徑中“/”的處理問題,建議使用大家都推薦的baseUrl中以“/”結尾,相對路徑開頭不加就沒問題了

三、總結

時間緊,還要趕項目,暫時就這麼多,後續有遇到新問題再持續更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章