在使用retrofit
過程中,通常,如果伺服器傳回我們的一個response
。
大至如下
{
"code":200,
"msg":"success",
"result":"result"
}
在result
中是我們請求需要的數據,所以在寫apis
的時候可以寫成
Call<Response<Result>> getResult(Requset request);
這裡的Result
根據實際需求來獲得,如果是這種情況的話就比較簡單.
但是如果伺服器回傳的result
欄位的值是加密過的,那麼這時候就無法直接解析了,我現在能想到的方法是給okhttp
新增攔截器,直接修改返回的資料裡面的字段(但是我還不知道具體怎樣做),現在覺得我的思路不太好,想請問下有什麼辦法可以好一點的解決,自定義一個ConverterFactory
?
謝謝,我想這種情況應該也不算少見,所以就來請教一下各位大神.謝謝
滿天的星座2017-06-05 11:13:02
可以考慮使用攔截器做解密處理, 使用Converter.Factory做資料協定解析.
Retrofit自訂資料協定步驟:
自訂Converter.Factory
, 參考retrofit2.converter.gson.GsonConverterFactory
呼叫 Retrofit.Builder#addConverterFactory(Converter.Factory)
除此之外, 呼叫方式也可以自訂, 目前比較流行使用的是Retrofit+RxJava(RxAndroid), 步驟如下:
自訂CallAdapter.Factory
, 參考retrofit2.adapter.rxjava.RxJavaCallAdapterFactory
呼叫 Retrofit.Builder#addCallAdapterFactory(CallAdapter.Factory)