简介
在Android应用中,如果不是单机的话,应该都有请求后端接口API的情况,本篇文章就介绍下Retrofit在Android中如何进行使用的
相关代码
我们以一个简单的登录接口为例
完整代码GitHub上有:https://github.com/lw1243925457/self_growth_android
仅做代码参考,目前数据监控上传是有了,但界面这些还很粗糙,没有完善
相关的依赖引入
首先我们在工程中引入相关的依赖:
implementation 'com.squareup.okhttp3:okhttp:4.5.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
相关的手机权限开启
需要在文件中开启网络权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.selfgrowth">
<uses-permission android:name="android.permission.INTERNET"/>
<application
......
</application>
</manifest>
配置Retrofit Client
Client的相关配置:单例,配置基于OKHTTP,Gson序列化;OKHTTP中添加了请求拦截器
@Data
public class RetrofitClient {
private static final RetrofitClient instance = new RetrofitClient();
private final Retrofit retrofit = new Retrofit.Builder()
.baseUrl(HttpConfig.ADDRESS) //基础url,其他部分在GetRequestInterface里
.client(httpClient())
.addConverterFactory(GsonConverterFactory.create()) //Gson数据转换器
.build();
public static RetrofitClient getInstance() {
return instance;
}
private OkHttpClient httpClient() {
return new OkHttpClient.Builder()
.addInterceptor(new AccessTokenInterceptor())
.connectTimeout(20, TimeUnit.SECONDS)
.build();
}
}
配置通用的请求拦截器
比如在请求中,带上Authorization等
public class AccessTokenInterceptor implements Interceptor {
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
if (UserCache.getInstance()