简介:
说起Retrofit网络请求这个框架 也是基于OkHttp之上的,
它是一种轻量级以及使用注解和动态代理的网络请求框架,
是目前比较流行的网络请求,Retrofit是square公司开源系列的精品之一,
简单好用,效率高,基于REST的架构风格,本框架的主要开发人Jake Wharton
特点:
性能好,处理快,使用简单是目前比较火的网络请求。
使用注解方式,大大地简化了URL拼接方式,注解一目了然,简单易懂。
请求参数注解都可以定制
默认使用OKHTTP请求
默认使用来进行数据解析
支持同步和异步执行,使得请求变得异常简单,只要调用enqueue/execute即可完成
分类:
注解是以@注解名在代码中存在的,根据注解的参数个数我们可以分为:
1.标记注解
2.单值注解
3.完整注解
接下来简单实现以下代码
public class RetrofitUntil {
private static final String TAG = "RetrofitUntil";
public static RetrofitUntil retrofitUntil;
private RetrofitUntil() {
}
public static RetrofitUntil getInstance() {
if (retrofitUntil == null) {
synchronized (RetrofitUntil.class) {
if (retrofitUntil == null) {
retrofitUntil = new RetrofitUntil();
}
}
}
return retrofitUntil;
}
private static synchronized OkHttpClient getOkHttpClient() {
// 日志拦截器
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(5000, TimeUnit.MILLISECONDS)
.writeTimeout(5000, TimeUnit.MILLISECONDS)
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.addInterceptor(new HeadUntil())
.addInterceptor(interceptor)
.build();
return okHttpClient;
}
private static synchronized Retrofit getRetrofit(String url) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())//rx java
.client(getOkHttpClient())
.build();
return retrofit;
}
// 获取上面的retrofit 动态代理
public <T> T setCreat(Class<T> apiService, String url) {
Retrofit retrofit = getRetrofit(url);
return retrofit.create(apiService);
}
}
请求头
public class HeadUntil implements Interceptor {
// 头
@Override
public Response intercept(Chain chain) throws IOException {
// 请求对象
Request request = chain.request();
SharedPreferences sharedPreferences = App.mContext.getSharedPreferences("user", Context.MODE_PRIVATE);
Request build = request.newBuilder()
// 添加请求头
.addHeader("xxx", sharedPreferences.getString("xxx", ""))
.addHeader("xxx", sharedPreferences.getString("xxx", ""))
.build();
Response proceed = chain.proceed(build);
return proceed;
}
}
在m数据层调用以下即可,因为每个人的数据层不一样所以只供参考哦
public class ShowModel implements ShowControcat.ShowModel {
@Override
public void responce(final ShowCallBack showCallBack) {
ApiService apiService = RetrofitUntil.getInstance().setCreat(ApiService.class, Api.BASE_URL);
Observable<ShowGson> show = apiService.getShow();
show.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new Observer<ShowGson>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ShowGson value) {
if (value!=null){
在这个方法中写数据即可
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}