refrofit的框架

BaseApis

public interface BaseApis {
//被观察者

    @GET
    Observable<ResponseBody> get(@Url String url);

    @POST
    Observable<ResponseBody> post(@Url String url, @QueryMap Map<String, String> map);

    @Multipart
    @POST
    Observable<ResponseBody> postFormBody(@Url String url, @PartMap Map<String, RequestBody> requestBodyMap);
}

RetrofitManager

public class RetrofitManager<T> {

//http://172.17.8.100/small/user/v1/register
public static final String REGRITER_URL="http://172.17.8.100/small/";

public static RetrofitManager retrofitManager;



public static synchronized RetrofitManager getInstance(){
    if(retrofitManager==null){
        retrofitManager=new RetrofitManager();
    }
    return retrofitManager;
}

private BaseApis mBaseApis;

public RetrofitManager(){
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient builder = new OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .readTimeout(10,TimeUnit.SECONDS)
            .writeTimeout(10,TimeUnit.SECONDS)
            .connectTimeout(10,TimeUnit.SECONDS)
            .retryOnConnectionFailure(true)
            .build();

            Retrofit builder1 = new Retrofit.Builder()
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .baseUrl(REGRITER_URL)
            .client(builder)
            .build();

    mBaseApis = builder1.create(BaseApis.class);
}

public Map<String, RequestBody> generateRequestBody(Map<String,String> requestDataMap){

    HashMap<String, RequestBody> requestBodyHashMap = new HashMap<>();

    for (String key:requestDataMap.keySet()){
        RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"),
                requestDataMap.get(key) == null ? "" : requestDataMap.get(key));
        requestBodyHashMap.put(key,requestBody);
    }
    return requestBodyHashMap;
}

public RetrofitManager get(String url,HttpListener listener){
    mBaseApis.get(url)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(getObserver(listener));
    return retrofitManager;
}

private Observer getObserver(final HttpListener listener) {
    Observer observer=new Observer<ResponseBody>(){

        //观察者
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(ResponseBody responseBody) {
            try {
                String data = responseBody.string();
                if(listener!=null){
                    listener.onSuccess(data);
                }
            } catch (IOException e) {
                e.printStackTrace();
                if(listener!=null){
                    listener.onFail(e.getMessage());
                }
            }
        }
    };
    return observer;
}

public RetrofitManager post(String dataUrl,Map<String,String> map,HttpListener listener){
    if(map==null){
        map=new HashMap<>();
    }
    mBaseApis.post(dataUrl,map)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(getObserver(listener));
    return retrofitManager;
}

public RetrofitManager postFormBoby(String dataUrl,Map<String,RequestBody> map,HttpListener listener){
    if(map==null){
        map=new HashMap<>();
    }
    mBaseApis.postFormBody(dataUrl,map)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(getObserver(listener));
    return retrofitManager;
}

public interface HttpListener {
    void onSuccess(String data);
    void onFail(String error);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值