RetrofitHelper
public class RetorfitHelper {
private final OkHttpClient okHttpClient;
static RetorfitHelper retorfitHelper;
private Retrofit retrofit;
private RetorfitHelper() {
okHttpClient= OkHttpUtil.getInstance().getOkHttpClient();
}
public static RetorfitHelper getInstance(){
if(retorfitHelper==null){
synchronized (RetorfitHelper.class){
if(retorfitHelper==null){
retorfitHelper=new RetorfitHelper();
}
}
}
return retorfitHelper;
}
public Retrofit getRetrofit() {
retrofit=new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
return retrofit;
}
public static<T> T getService(Class<T> clazz){
return RetorfitHelper.getInstance().getRetrofit().create(clazz);
}
}
AbstractObserver
public abstract class AbstractObserver<T> implements Observer<T> {
public abstract void onSuccess(T t);
public abstract void onFailure();
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(T value) {
onSuccess(value);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
}
OkHttpUtil
public class OkHttpUtil {
static OkHttpUtil okHttpUtil;
private OkHttpClient okHttpClient;
private OkHttpUtil() {
okHttpClient=new OkHttpClient.Builder()
.readTimeout(5000, TimeUnit.SECONDS)
.connectTimeout(5000,TimeUnit.SECONDS)
.addInterceptor(new CommonInterceptor())
.build();
}
public static OkHttpUtil getInstance(){
if(okHttpUtil==null){
synchronized (OkHttpUtil.class){
if(okHttpUtil==null){
okHttpUtil=new OkHttpUtil();
}
}
}
return okHttpUtil;
}
public OkHttpClient getOkHttpClient() {
return okHttpClient;
}
//公共参数拦截器(source=android)
class CommonInterceptor implements Interceptor{
@Override
public Response intercept(Chain chain) throws IOException {
//获取原先的请求
Request originalRequest = chain.request();
//重新构建url
HttpUrl.Builder builder = originalRequest.url().newBuilder();
//如果是post请求的话就把参数重新拼接一下,get请求的话就可以直接加入公共参数了
if(originalRequest.method().equals("POST")){
FormBody body = (FormBody) originalRequest.body();
for(int i = 0; i < body.size();i++){
Log.i("RequestFatory",body.name(i) + "---" + body.value(i));
builder.addQueryParameter(body.name(i),body.value(i));
}
}
//这里是我的2个公共参数
builder.addQueryParameter("source","android");
//新的url
HttpUrl httpUrl = builder.build();
Request request = originalRequest.newBuilder()
.method(originalRequest.method(),originalRequest.body())
.url(httpUrl).build();
return chain.proceed(request);
}
}
}