Heim  >  Fragen und Antworten  >  Hauptteil

Wie geht Retrofit mit der Datentypauflösung für verschlüsselte Felder um?

Im Einsatzretrofit过程中,通常,如果服务器返回我们的一个response.
So groß wie unten

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

kann als result中是我们请求需要的数据,所以在写apis wenn

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

Das Result hier wird auf der Grundlage des tatsächlichen Bedarfs ermittelt. Wenn dies der Fall ist, ist es relativ einfach.

Aber wenn der Server zurückkehrt result字段的值是加密过的,那么这时候就无法直接解析了,我现在能想到的方法是给okhttp添加拦截器,直接修改返回的数据里面的字段(但是我还不知道具体怎样做),现在觉得我的思路不太好,想请问下有什么办法可以好一点的解决,自定义一个ConverterFactory?

Danke, ich denke, diese Situation sollte nicht ungewöhnlich sein, deshalb bin ich gekommen, um die Experten um Rat zu fragen. Danke

伊谢尔伦伊谢尔伦2717 Tage vor662

Antworte allen(2)Ich werde antworten

  • 滿天的星座

    滿天的星座2017-06-05 11:13:02

    可以考虑使用拦截器做加解密处理, 使用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)

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-05 11:13:02

    一般 Result里会用泛型T 代表从服务器实际返回的实体,可以如你所说先用拦截器对结果 解码,然后直接gson解析即可

    Antwort
    0
  • StornierenAntwort