implementation 'com.squareup.retrofit2:retrofit:2.0.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'io.reactivex:rxandroid:1.2.1'
implementation 'io.reactivex:rxjava:1.2.1'
工具类
package com.example.demo4.Utils;
import com.example.demo4.Api.Api;
import com.example.demo4.Api.ApiSerVice;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class Ustils {
private final ApiSerVice myService;
private Ustils(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.writeTimeout(10,TimeUnit.SECONDS)
.readTimeout(10,TimeUnit.SECONDS)
.connectTimeout(10,TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(Api.ApiBanner)
.client(okHttpClient)
.build();
myService = retrofit.create(ApiSerVice.class);
}
public static Ustils getInstance() {
return RetrofitHolder.UTIL;
}
private static class RetrofitHolder{
private static final Ustils UTIL=new Ustils();
}
public Ustils doGet(String url){
myService.doGet1(url).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(observer);
return Ustils.getInstance();
}
private Observer observer=new Observer<ResponseBody>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (httpListener!=null){
httpListener.failure(e.getMessage());
}
}
@Override
public void onNext(ResponseBody responseBody) {
if (httpListener!=null){
try {
httpListener.success(responseBody.string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
public interface HttpListener{
void success(String result);
void failure(String error);
}
private HttpListener httpListener;
public void setHttpListener(HttpListener httpListener){
this.httpListener=httpListener;
}
}
Api类 建议用分割线结尾
public static final String ApiBanner="http://172.17.8.100/small/commodity/v1/";
public static final String ApiBanner2="bannerShow";
动态代理类
@GET
Observable<ResponseBody> doGet1(@Url String url);
Model调用
package com.example.demo4.Model;
import com.example.demo4.Api.Api;
import com.example.demo4.Api.ApiSerVice;
import com.example.demo4.Bean.BannerBean;
import com.example.demo4.Bean.ShowBean;
import com.example.demo4.Utils.Ustils;
import com.google.gson.Gson;
import java.util.List;
import okhttp3.Callback;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class Model implements ModelContract{
@Override
public void getBannerData(final Callback callback) {
Ustils.getInstance().doGet(Api.ApiBanner2).setHttpListener(new Ustils.HttpListener() {
@Override
public void success(String result) {
Gson gson = new Gson();
BannerBean bannerBean = gson.fromJson(result, BannerBean.class);
List<BannerBean.ResultBean> result1 = bannerBean.getResult();
callback.onsuess(result1);
}
@Override
public void failure(String error) {
}
});