retrofit+RXjava二次封装 (2)

说明:此处首先把实体类通过反射转换成map格式的数据,然后初始化Retrofit,的设置,然后依据接口得到observable 。当中getOkHttp此处目的是为了打印出网络请求的具体信息,包含请求地址,post数据,返回数据等,须要在gradle中增加下面依赖:

retrofit 接口详情:

public interface RetrofitInterface { @POST Flowable<String> getData(@Url String url, @QueryMap HashMap<String,String> map); }

说明:此处Observable能够设置返回详细的类型。

@POST Observable<DataEntity> getData(@Url String url, @QueryMap HashMap<String,String> map);

免除后期NetWork类中将String解析成详细的实体类的操作。retrofit会自己主动返回DataEntity类,可是假设固定死了此处的泛型,那么每个后台的接口,就须要在这里相应的写一个Retrofit的接口。

所以此处採用String类型,再在NetWork类中进行map操作符 转换成DataEntity类。

假设须要。这里整个app仅仅写一个接口,且兴许不再retrofit自己主动返回实体类,不用像此处NetWork类手动解析,有待兴许研究。

(3)关于实体类转化为map数据。

public class MapUtils { /** * 把请求实体类里面的參数取出来,然后放入hashmap中 * @param clazz * @param object * @return */ public static HashMap<String,String> getValuesHash(Class<?

> clazz,Object object){ HashMap<String,String> result=new HashMap<String,String>(); if(object.equals(null))return result; Field[] field = clazz.getFields(); for(Field f : field){ if ("serialVersionUID".equals(f.getName())) continue; try { Object value=f.get(object); if(value!=null){ result.put(String.valueOf(f.getName()),String.valueOf(value)); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } return result; }

备注:以上就是Retrofit简单post请求的简单封装思路。很多其它需求。可依据rtetrofit的配置,特殊处理。假设须要设置请求头信息可在

@POST Flowable<String> getData(@Url String url, @QueryMap HashMap<String,String> map);这里加入@Headers 注解。







内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpjgs.html