RetrofitUtils:
public class RetrofitUtils {
private static RetrofitUtils instance;
private OkHttpClient client;
private final String BASE_URL="http://172.17.8.100/small/";
private BaseApis baseApis;
//创建单例
public static RetrofitUtils getInstance(){
if(instance==null){
synchronized (RetrofitUtils.class){
instance=new RetrofitUtils();
}
}
return instance;
}
//构造方法
public RetrofitUtils(){
//日志拦截
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
HttpLoggingInterceptor interceptor1 = interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client=new OkHttpClient.Builder()
.addInterceptor(interceptor1)
.writeTimeout(2000, TimeUnit.SECONDS)
.readTimeout(2000,TimeUnit.SECONDS)
.connectTimeout(2000,TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BASE_URL)
.client(client)
.build();
baseApis=retrofit.create(BaseApis.class);
}
//get请求
public RetrofitUtils getRequest(String url,HttpCallBack httpCallBack){
baseApis.getRequest(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(httpCallBack));
return instance;
}
//post请求
public RetrofitUtils postRequest(String url, Map<String,String> map,HttpCallBack httpCallBack){
if(map==null){
map=new HashMap<>();
}
baseApis.postRequest(url,map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getObserver(httpCallBack));
return instance;
}
private Observer getObserver(final HttpCallBack callBack) {
Observer observer=new Observer<ResponseBody>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if(callBack!=null){
callBack.onFail(e.getMessage());
}
}
@Override
public void onNext(ResponseBody responseBody) {
try {
String result = responseBody.string();
if(callBack!=null){
callBack.onSuccess(result);
}
}catch (Exception e){
e.printStackTrace();
if(callBack!=null){
callBack.onFail(e.getMessage());
}
}
}
};
return observer;
}
//接口传值
public HttpCallBack httpCallBack;
public void setHttpCallBack(HttpCallBack callBack){
this.httpCallBack=callBack;
}
public interface HttpCallBack{
void onSuccess(String data);//成功
void onFail(String error);//失败
}
}