前言
Retrofit是在OKHttp的基础上封装的,和OKHttp是同一家公司开发的,和OKHttp相比代码上会更加简洁,使用更加方便。
一、Retrofit是什么?
Retrofit是第三方网络框架,可以用于Java,安卓平台,本文主要讲在安卓平台的使用。
二、使用步骤
1.引入库
在安卓Grable(:app)中加入依赖:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'//配套使用的,起转化JSON字符串的作用
2.创建接口
代码如下:
public interface Api {
@FormUrlEncoded //表单提交注解
@POST("login.php") //访问方式
Call<BaseApiResponse<List<User>>> login(@Field("usuario") String email, @Field("password") String password);//返回数据类型及提交参数。
@GET("getUser.php?userID=id") //访问方式
Call<BaseApiResponse<User>> getUser();//返回数据类型及提交参数。
}
3.创建Retrofit对象
这里我们创建一个静态方法,以供外部调用,获取Retrofit对象:
public class RetrofitApi {
private static final String Domain = "url";
public static Retrofit getRetrofit(){
//创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())//将json转化为对象
.baseUrl(Domain)
.build();
return retrofit;
}
}
4.获取响应数据
Api api = RetrofitApi.getRetrofit().create(Api.class);//动态创建接口对象
Call<BaseApiResponse<List<User>>> call = api.login(email,hashedPass);
//Call<BaseApiResponse<User>> call = api.getUser();//get请求
call.enqueue(new Callback<BaseApiResponse<List<User>>>() {
@Override
public void onResponse(Call<BaseApiResponse<List<User>>> call, Response<BaseApiResponse<List<User>>> response) {
Log.i("线程环境:", Thread.currentThread().getName());//线程环境是主线程
Log.i("响应数据:", response.body().toString);
}
@Override
public void onFailure(Call<BaseApiResponse<List<User>>> call, Throwable t) {
Log.i("获取失败:", t.toString);
}
});
总结
本文主要讲述了Retrofit的使用,Retrofit使用了很多注解,让我们使用起来很简单,本文只提了@POST,和@GET,还有很多注解,有机会在进行介绍。那这就是本文的全部内容了。