retrofit使用随记

Posted 西瓜皮不甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了retrofit使用随记相关的知识,希望对你有一定的参考价值。

 

1.请求接口

public interface RetrofitApi {
    /*注册*/
    /*登录*/
    @FormUrlEncoded    //post请求带这个
    @POST(AppUrl.URL_LOGIN)
    Call<User> login(@Field("json") JSONObject jsonObject);
     //@Filed或者其他,google
     //还有填写字段的方式,这是封装json
    /*Web*/
    @GET("url")
    Call<ResponseBody> getWebData();
    //String返回类型用ResponseBody

    /*注解url*/
    @GET
    Call<ResponseBody> getInfo(@Url String url);
}

2.使用:每个call只能执行一次,可以每次都重新获取,也可以通过克隆call.clone()获取一个新的执行;

String(get) 返回值

Call<ResponseBody> call = ...;//封装之类网上搜索
if (type == 1){
            call = ApiFactory.getLiangCaiApi().getWebData();
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    ResponseBody bodys = response.body();
                    bodys.string;//获取数据
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失败");
                }
            });
        }else {
            call = ApiFactory.getLiangCaiApi().getWebData(getWebUrl());
            call.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    
                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {
                    showToast("失败");
                }
            });
        }

post

Call<LoginBean> call;
call = call = ApiFactory.getRetrofitApi().login(getJson());
        call.enqueue(new CallBack<LoginBean>() {
            @Override
            public void onResponse(LoginBean result) {
                //result  实体类对象
            }

            @Override
            public void onFailure(String error) {

            }
        });
/**
     * post请求
     * */
    JSONObject jObject;
    private JSONObject getJson() {
        jObject = new JSONObject();
        try {
            jObject.put("name", "111");
            jObject.put("password", "123456");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jObject;
    }

3.自定义CallBack

自定义一个自己的MyCallBack继承CallBack

可以通过多态的方式(实体类的基类)在自定义的CallBack里预先处理一些内容

单纯的retrofit,没有使用rxjava

以上是关于retrofit使用随记的主要内容,如果未能解决你的问题,请参考以下文章

科特林 | Retrofit API 使用 access_token 获取调用

使用Retrofit2解析XML。多个结果列表不起作用

使用 Retrofit 解析带有对象数组的 JSON 数组

导航到另一个片段时触发 API 调用

如何从片段中的 JSON 响应中的对象获取数据

Sublime使用随记