android - retrofit 如何處理加密欄位的資料類型解析?
伊谢尔伦
伊谢尔伦 2017-06-05 11:11:02
0
2
653

在使用retrofit過程中,通常,如果伺服器傳回我們的一個response
大至如下

{
    "code":200,
     "msg":"success",
     "result":"result"
}

result中是我們請求需要的數據,所以在寫apis的時候可以寫成

Call<Response<Result>> getResult(Requset request);

這裡的Result 根據實際需求來獲得,如果是這種情況的話就比較簡單.

但是如果伺服器回傳的result欄位的值是加密過的,那麼這時候就無法直接解析了,我現在能想到的方法是給okhttp新增攔截器,直接修改返回的資料裡面的字段(但是我還不知道具體怎樣做),現在覺得我的思路不太好,想請問下有什麼辦法可以好一點的解決,自定義一個ConverterFactory?

謝謝,我想這種情況應該也不算少見,所以就來請教一下各位大神.謝謝

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
滿天的星座

可以考慮使用攔截器做解密處理, 使用Converter.Factory做資料協定解析.

Retrofit自訂資料協定步驟:

  1. 自訂Converter.Factory, 參考retrofit2.converter.gson.GsonConverterFactory

  2. 呼叫 Retrofit.Builder#addConverterFactory(Converter.Factory)

除此之外, 呼叫方式也可以自訂, 目前比較流行使用的是Retrofit+RxJava(RxAndroid), 步驟如下:

  1. 自訂CallAdapter.Factory, 參考retrofit2.adapter.rxjava.RxJavaCallAdapterFactory

  2. 呼叫 Retrofit.Builder#addCallAdapterFactory(CallAdapter.Factory)

淡淡烟草味

一般 Result裡會用泛型T 代表從伺服器實際回傳的實體,可以如你所說先用攔截器對結果 解碼,然後直接gson解析即可

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!