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类


然后再去运行程序成功了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容