retrofit处理响应数据

之前没有用过retrofit请求,前两天心血来潮想着把手头的项目改成retrofit+rxjava的形式,但是项目的数据请求和返回都是经过压缩和加密的,并不是传统的json串,如果在返回的结果中处理会显得比较繁琐,然后就想着能不能使用inspector来进行处理,通过对interceptor测试最后发现不可行,于是就想着能不能有其他的实现方式,通过网络上的搜索发现了converter,通过测试最终实现了想要的结果。现将实现的过程分享出来。

通过对retrofit的了解,发现在创建retrofit时可以添加addCallAdapterFactory()方法,正常的返回json串是可以指定其为GsonConverterFactory.create(),然后配合在接口中定义的类型转换成相应的类型,这里是在网上请求得到的数据是zip的数据流,所以需要自定义一个ConverterFacttory。

在自定义的factory中重写responseBodyConverter

@Override

publicConverterresponseBodyConverter(Typetype,Annotation[]annotations,

Retrofitretrofit) {

Log.d("test","responseBodyConverter1111111111111");

TypeAdapteradapter=gson.getAdapter(TypeToken.get(type));

returnnewMyJsonResponseBodyConverter<>(gson,adapter);//返回自定义的returnnewMyJson惹

}

然后自定义ResponseBodyConverter,在ResponseBodyConverter里处理得到的响应数据

@Override

publicTconvert(ResponseBodyresponseBody)throwsIOException{

return (T)value;

}


这里是对数据进行解密和解压,然后返回处理好的数据,这里返回的是我们预先写好的接收返回数据的model类


然后再去运行程序成功了

你可能感兴趣的:(retrofit处理响应数据)