Retrofit2 的简单使用

里面的原理啥的就不讲了,网上一堆文章,这里只是将一下简单的使用,笔记记录一下:

1、老规矩 GitHub 导入:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.9.0'

2、对其进行简单的封装,使用单例模式
public class BaseRequest {
    private static BaseRequest mInstance;
    private static Retrofit retrofit;
    public  ApiService request = null;

    public static BaseRequest getInstance() {
        if (mInstance == null) {
            synchronized (BaseRequest.class) {
                if (mInstance == null) {
                    mInstance = new BaseRequest();
                }
            }
        }
        return mInstance;
    }

    public void initRequest() {
         retrofit = new Retrofit.Builder().baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
         request = retrofit.create(ApiService.class);

    }


在Application 里调用 initRequest 方法,进行初始化


3.写请求接口

public interface ApiService {
    @GET("/login")
    Call> login(@Query("phoneNumber") String name, @Query("password") String password);
}
注:此处注解 有具体规则,请参照注解的讲解文章,这里只是一个简单的demo

4. 调用

BaseRequest.getInstance().request.login("啊啊啊", "aaaa")
        .enqueue(new Callback>() {
            @Override
            public void onResponse(Call> call, Response> response) {
                //如果请求成功 通过 response.body() 获取返回的json 字符串
                Map map = response.body();

                //如果返回失败(此处失败指 后台接口返回非 200 状态) 通过 response.errorBody().string() 获得返回的字符串

                try {
                    Log.d("aaaa", "response=" + response.errorBody().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call> call, Throwable t) {

            }
        });

若有不对欢迎指正,感谢!

你可能感兴趣的:(Retrofit2 的简单使用)