En cours d'utilisationretrofit
过程中,通常,如果服务器返回我们的一个response
.
Aussi grand que ci-dessous
{
"code":200,
"msg":"success",
"result":"result"
}
peut s'écrire result
中是我们请求需要的数据,所以在写apis
quand
Call<Response<Result>> getResult(Requset request);
Le Result
ici est obtenu en fonction des besoins réels. Si tel est le cas, ce sera relativement simple.
Mais si le serveur revient result
字段的值是加密过的,那么这时候就无法直接解析了,我现在能想到的方法是给okhttp
添加拦截器,直接修改返回的数据里面的字段(但是我还不知道具体怎样做),现在觉得我的思路不太好,想请问下有什么办法可以好一点的解决,自定义一个ConverterFactory
?
Merci, je pense que cette situation ne devrait pas être rare, je suis donc venue demander conseil aux experts. Merci
.
RétrofitÉtapes du protocole de données personnalisé :
Personnalisez
Converter.Factory
, reportez-vous àretrofit2.converter.gson.GsonConverterFactory
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)
Retrofit.Builder#addConverterFactory(Converter.Factory)
🎜🎜 🎜 🎜De plus, la méthode d'appel peut également être personnalisée. La plus populaire actuellement est 🎜Retrofit🎜+🎜RxJava🎜(🎜RxAndroid🎜). 🎜 🎜🎜PersonnalisezCallAdapter.Factory
, reportez-vous àretrofit2.adapter.rxjava.RxJavaCallAdapterFactory
🎜🎜 🎜🎜AppelezRetrofit.Builder#addCallAdapterFactory(CallAdapter.Factory)
🎜🎜 🎜Généralement, le T générique est utilisé dans Result pour représenter l'entité réellement renvoyée par le serveur, vous pouvez d'abord utiliser l'intercepteur pour décoder le résultat, puis l'analyser directement avec gson
.