RxJava+Retrofit通用封裝__Java

來源:互聯網
上載者:User
public interface Api {    //獲得購物車的介面    public static final String GETCARS = "https://www.zhaoapi.cn/product/getCarts";    //Boss    public static final String BASE = "http://120.27.23.105/";    //Login    public static final String Login = "user/login";    public static final String zhuce = "user/reg";    //建立訂單介面    public static final String CREATEORDER = "https://www.zhaoapi.cn/product/createOrder";    //擷取訂單列表介面    public static final String GETORDERS = "https://www.zhaoapi.cn/product/getOrders";    //.修改訂單狀態    public static final String UPDATEORDER = "https://www.zhaoapi.cn/product/updateOrder";}
public interface ApiService {    @GET    Observable<String> get(@Url String url, @QueryMap Map<String, String> map);    @FormUrlEncoded    @POST    Observable<String> post(@Url String url, @FieldMap Map<String, String> map);}
public abstract class BaseObserver<T> implements Observer<String> {    @Override    public void onSubscribe(Disposable d) {    }    @Override    public void onNext(String s) {        try {            Type genType = getClass().getGenericSuperclass();            Type[] params = ((ParameterizedType) genType).getActualTypeArguments();            Class entityClass = (Class) params[0];            Gson gson = new Gson();            T t = (T)gson.fromJson(s,entityClass);            success(t);        } catch (Exception e) {            failure(1001);            e.printStackTrace();        }    }    @Override    public void onError(Throwable e) {        try {            if(e != null){                if(e instanceof HttpException){                    failure(HTTP_ERROR);                } else if(e instanceof SocketException){                    failure(NET_WORK_ERROR);                }else {                    failure(UNKNOW_ERROR);                }            }else {                failure(UNKNOW_ERROR);            }            e.printStackTrace() ;        } catch (Exception e1) {            failure(UNKNOW_ERROR);            e1.printStackTrace();        }    }    @Override    public void onComplete() {    }    //    /**     * code     *  1000 UNKNOW_ERROR 未知錯誤     *  1001 json 轉化異常  parse error     *  1002 當前網路不可用     java.net.SocketException: Network is unreachable  逾時     *  1003 伺服器不可用 401 402 403 500 502 503 504     * @param code     */    public static final int UNKNOW_ERROR = 1000;    public static final int JSON_FORMAT_ERROR = 1001;    public static final int NET_WORK_ERROR = 1002;    public static final int HTTP_ERROR = 1003;    public abstract void success(T t);    public abstract void failure(int code);}
public class LoginModule {    public void getData(Map<String, String> map, final LoginModuleListener loginModuleListener){        RetrofitManager.post(Api.Login, map, new BaseObserver<LoginBean>() {            @Override            public void success(LoginBean loginBean) {                if(loginModuleListener!=null){                    loginModuleListener.success(loginBean);                }            }            @Override            public void failure(int code) {                Log.d("TAG",code+"");            }        });    }    public interface LoginModuleListener{           void success(LoginBean loginBean);    }}



public class RetrofitManager {    public static OkHttpClient client = new OkHttpClient.Builder()            //OK自訂攔截器            .addInterceptor(new LoggingInterceptor())            .build();    public static com.hss.net.ApiService apiService = new Retrofit.Builder()            .baseUrl(com.hss.net.Api.BASE)            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())            .addConverterFactory(ScalarsConverterFactory.create())            .client(client)            .build()            .create(ApiService.class);    public static void get(String url, Map<String,String> map, Observer observer){        apiService.get(url,map)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(observer);    }    public static void post(String url,Map<String,String> map,Observer observer){        apiService.post(url,map)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(observer);    }}



public class LoggingInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        Request request = chain.request();        //GET自訂攔截器        if (request.method().equals("GET")) {            HttpUrl url = request.url().newBuilder()                    .addQueryParameter("source", "android")                    .build();            //添加要求標頭            Request newrequest = request.newBuilder()                    .url(url)                    .build();            return chain.proceed(newrequest);        }else {            //POST自訂攔截器            String url = request.url().url().toString();            url+="&source=android";            Request newRequset = request.newBuilder().url(url).build();            return chain.proceed(newRequset);        }    }}




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.