里面的原理啥的就不讲了,网上一堆文章,这里只是将一下简单的使用,笔记记录一下:
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<Map<String,Object>> login(@Query("phoneNumber") String name, @Query("password") String password);
}
注:此处注解 有具体规则,请参照注解的讲解文章,这里只是一个简单的demo
4. 调用
BaseRequest.getInstance().request.login("啊啊啊", "aaaa")
.enqueue(new Callback<Map<String, Object>>() {
@Override
public void onResponse(Call<Map<String, Object>> call, Response<Map<String, Object>> response) {
//如果请求成功 通过 response.body() 获取返回的json 字符串
Map<String,Object> 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<Map<String, Object>> call, Throwable t) {
}
});
若有不对欢迎指正,感谢!