例子:
先导入相关依赖,再进行创建
使用了单例设计模式
/**
* 创建单例模式
*/
public class RetrofitUtil {
private static volatile RetrofitUtil instance;
private Retrofit retrofit;
//构造方法
private RetrofitUtil(){
//日志拦截器
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);//调用到拦截器
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.addInterceptor(new MyInterceptor())//网络拦截器
.build();
retrofit=new Retrofit.Builder()
.baseUrl(Urls.BASE_URL)//传入网址公共部分
.client(client)//拦截器
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
//单例方法
public static RetrofitUtil getInstance(){
if (instance==null){
synchronized (RetrofitUtil.class){
if (null==instance){
instance=new RetrofitUtil();
}
}
}
return instance;
}
//得到ApiService中的接口方法
//创建一个调用方法
public ApiService getService(){
return retrofit.create(ApiService.class);
}
}
之后会结合MVP的模式来使用
网络拦截器
/**
* 自定义拦截器.使用的是okhttp来定义的拦截器
*/
public class MyInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
HttpUrl httpUrl = request
.url()
.newBuilder()
.addQueryParameter("source", "android")
.build();
Request requestNew = request
.newBuilder()
.url(httpUrl)
.build();
return chain.proceed(requestNew);
}
}
//例子,根据自己情况写主要路径接口
public class Urls {
public static final String baseUrl="https://www.zhaoapi.cn/";
}