Retrofit 使用心得

1、retrofit 是一个网络模块,它内部是OKhttp的框架,OkHttp在Android5.0源码里面Google官方也开始使用了,它使用注解设置各项参数

他可以使Android的网络同步模块,写的很简洁,稳定,和高效


基础用法网上都有这里讲一个 提交    "对象"

    @Headers({"Content-type: application/json"})
    @POST("项目相对地址")
    public CommonResult upLoadUsers(@Body List<UserInfo> userList);

这里是将 用户对象的集合 作为一个对象提交到服务器    用到的的注解是 @Body         

他其实最终还是会将对象转化为json字符串的方式提交


当我我们从网络上获取下来的json  或者我们 提交的 的对象

都会被 Retrofit的自动转化为    对象到json String    或者  json String 到 对象,这个过程 Retrofit的内部使用的是Gson 进行转化的,

当然如果喜欢使用 阿里的  FastJson的同学可以自定义 convert,方式如下:



    public class  MyConverter  implements Converter{
        @Override
        public Object fromBody(TypedInput body, Type type)
                throws ConversionException {
            //这里的 typedInput 相应体   
            //type 就是要转化成的对象   是在定义的Callback的泛型
            try {
                InputStream  ins  = body.in(); // in 就是  Socket的  InputStream
                BufferedReader reader  = new BufferedReader(new InputStreamReader(ins)); //从流里面读取内容
                String buff = reader.readLine();//用fastjson  转化为 对象
                return JSON.parseObject(buff, type.getClass());
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        public TypedOutput toBody(final Object arg0) {      //这里的arg0就是 要上传的对象
            if(arg0 == null){
                return null;
            }
            TypedOutput  op  = new TypedOutput() {
                @Override
                public void writeTo(OutputStream out) throws IOException {   // out 就是  Socket的  OutputStream
                    out.write(JSON.toJSONString(arg0).getBytes(), 0, (int)length()); //向流里面写数据
                }
                @Override
                public String mimeType() { //类型
                    return "String";
                }
                @Override
                public long length() {// 获取要上传的数据的 长度
                    return JSON.toJSONString(arg0).length();
                }
                @Override
                public String fileName() {
                    return null;
                }
            };
            return op;
        }
        
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值