Retrofit 学习笔记和简单封装

5 篇文章 0 订阅
1 篇文章 0 订阅

最近Retrofit框架大火,学习并记录一下,并且进行了简单的封装

1.首先定义接口

    public interface LoginServer{
        @POST("/123/login")    //@POST很明显是用来标记请求方式的 当然一定有@GET
        Call<LoginBean> getString  //要接受返回参数的bean类型 方法名getString可以自定义 只要跟下面调用的地方对应即可
                (@Query("username")String username, //通过@Query注解需要的参数
                 @Query("pwd")String pwd,
                 @QueryMap Map<String,String> map); //通过@QueryMap注解通过Map类型传入参数 
                    //还有一些其他的注解可以定义参数 比如传入list参数的类型 等等 这里使用这两种方法
                    //经过测试 @Query和@QueryMap注解可以同时使用 可以在map中放入一些固定的参数
    }


2.获得一个Retrofit实例

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ConstantValue.COMMON)  //传入baseUrl
                .addConverterFactory(GsonConverterFactory.create())  //加入对gson的支持  如果需要支持rxjava也需要加入 这里先不加
                .build();

3.创建一个Call对象

        LoginServer server = retrofit.create(LoginServer .class); //传入刚才定义的接口

        Call<UserInfoBean> call = server.getString("username"); //UserInfoBean是要接收参数的bean类型


4.发送异步联网请求

        call.enqueue(new Callback<UserInfoBean>() {
            @Override
            public void onResponse(Call<UserInfoBean> call, Response<UserInfoBean> response) {
                response.body(); //这个方法返回的是得到的UserInfoBean

            }

            @Override
            public void onFailure(Call<UnitBeanTreeBean> call, Throwable t) {
                
            }
        });

retrofit也支持发送同步的请求,这里就不写了,用不到


最近自己简单封装了一个RetrofitBuilder

项目地址:https://github.com/peirato/RetrofitBuilder

使用时 首先 设置baserul 在RetrofitBuilder方法中 这个地方:

        retrofit = new Retrofit.Builder()
                .baseUrl("http://www.weather.com.cn") //填入baseUrl
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();

在联网的时候调用就行

        RetrofitBuilder.build()
//                .param("city","beijing")   //该请求不需要参数 如果需要参数这么写就行
//                .param("day","2.14")
                .get("/data/sk/101010100.html", new RetrofitBuilder.CallBack<WertherBean>() {
            @Override
            public void onSuccess(WertherBean bean) {

                tv.setText(bean.getWeatherinfo().toString());

            }

            @Override
            public void onError(String errMsg) {

            }

            @Override
            public void onFailure() {

            }
        });
    }








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值