购物车网络嵌套

一、购物车网络嵌套
public class MyUtilsOkhttp {
private MyReApi myReApi;
private MyCallBack myCallBack;

private MyUtilsOkhttp() {
    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .addInterceptor(loggingInterceptor)
            .build();

    Retrofit retrofit = new Retrofit.Builder().baseUrl(MyUrl.BASE_URL)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient).build();
    myReApi = retrofit.create(MyReApi.class);
}

private static class HandOkhttp {
    private static MyUtilsOkhttp myUtilsOkhttp = new MyUtilsOkhttp();
}

public static MyUtilsOkhttp getINtes() {
    return HandOkhttp.myUtilsOkhttp;
}

private Observable<ResponseBody> joinShopping;
private Observable<ResponseBody> listShopping;
private Map<String, Object> hearMap;
private Observable<ResponseBody> mShopping;

public void LastRequest(final MyCallBack myCallBack) {
    Map<String, Object> map = new HashMap<>();
    map.put("phone", "18513426666");
    map.put("pwd", "123456");
    Observable<ResponseBody> loginObser = myReApi.PostUrl(MyUrl.LOGIN_URL, map);

    loginObser.subscribeOn(Schedulers.io())
            .observeOn(Schedulers.io())
            .doOnNext(new Action1<ResponseBody>() {
                @Override
                public void call(ResponseBody responseBody) {
                    try {
                        String string = responseBody.string();
                        Gson gson = new Gson();
                        LoginBean loginBean = gson.fromJson(string, LoginBean.class);
                        hearMap = new HashMap<>();
                        hearMap.put("userId", loginBean.getResult().getUserId());
                        hearMap.put("sessionId", loginBean.getResult().getSessionId());
                        JSONObject object = new JSONObject();
                        object.put("commodityId", 29);//price 78
                        object.put("count", 1);

                        JSONObject object1 = new JSONObject();
                        object1.put("commodityId", 15);
                        object1.put("count", 1);

                        JSONObject object2 = new JSONObject();
                        object2.put("commodityId", 6);
                        object2.put("count", 4);

                        JSONObject object3 = new JSONObject();
                        object3.put("commodityId", 27);
                        object3.put("count", 139);

                        JSONObject object4 = new JSONObject();
                        object4.put("commodityId", 32);//price 78
                        object4.put("count", 1);


                        JSONArray array = new JSONArray();
                        array.put(object);
                        array.put(object1);
                        array.put(object2);
                        array.put(object3);
                        array.put(object4);
                        Log.e("jsonStri", array.toString());
                        joinShopping = myReApi.JSOiShopping(hearMap, MyUrl.JOIN_SHOPPING, array.toString());
                    } catch (Exception e) {

                    }
                }
            }).subscribeOn(Schedulers.io())
            .observeOn(Schedulers.io())
            .flatMap(new Func1<ResponseBody, Observable<ResponseBody>>() {
                @Override
                public Observable<ResponseBody> call(ResponseBody responseBody) {
                    return joinShopping;
                }
            }).doOnNext(new Action1<ResponseBody>() {
        @Override//这个是加入购物车走的成功回调
        public void call(ResponseBody responseBody) {

            try {

                Gson gosn = new Gson();
                //解析bean
                JoinShopping joinShopping = gosn.fromJson(responseBody.string(), JoinShopping.class);
                if (joinShopping.getStatus().equals("0000")) {
                    Log.e("加入购物车成功", "----");
                    mShopping = myReApi.ShoppingUrl(MyUrl.SHOPPINGCAR_URL, hearMap);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }).flatMap(new Func1<ResponseBody, Observable<ResponseBody>>() {
        @Override
        public Observable<ResponseBody> call(ResponseBody responseBody) {
            return mShopping;
        }
    }).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<ResponseBody>() {
        @Override
        public void call(ResponseBody responseBody) {
            try {
                myCallBack.OkSeeces(responseBody.string());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

}

public interface MyCallBack  {
    void OkSeeces(String seeces);

    void OkError(String error);
}

}

二、网络嵌套
通过一级类目id请求二级类目最后根据二级类目id请求展示
public class OkHttpUtils {
private MyReApi myReApi;
private final OkHttpClient okHttpClient;

private OkHttpUtils() {
    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(20, TimeUnit.SECONDS)
            .readTimeout(20, TimeUnit.SECONDS)
            .addInterceptor(loggingInterceptor)
            .addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    Request request = chain.request();
                    return chain.proceed(request);
                }
            })
            .build();

    Retrofit retrofit = new Retrofit.Builder().baseUrl(MyUrl.BASE_TOU)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .client(okHttpClient)
            .build();

    myReApi = retrofit.create(MyReApi.class);
}
private static class HanderOkhttp{
    private static OkHttpUtils okHttpUtils = new OkHttpUtils();
}
public static OkHttpUtils getInts(){
    return HanderOkhttp.okHttpUtils;
}

private Observable<ResponseBody> OneType;
private Observable<ResponseBody> TwoType;
private Observable<ResponseBody> ThreeType;
private Map<String,Object> heardMap;

public void LastMap(final MyCallback myCallback){
    Observable<ResponseBody> oneGET = myReApi.OneGET(MyUrl.BASE_YI);

    oneGET.subscribeOn(Schedulers.io())
            .observeOn(Schedulers.io())
            .doOnNext(new Action1<ResponseBody>() {
                @Override
                public void call(ResponseBody responseBody) {
                    try {
                        String string = responseBody.string();
                        Gson gson = new Gson();
                        OneBean oneBean = gson.fromJson(string, OneBean.class);
                        List<OneBean.ResultBean> result = oneBean.getResult();
                        String id = result.get(0).getId();

                        TwoType = myReApi.OneGET("commodity/v1/findSecondCategory?firstCategoryId="+id);

                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }).subscribeOn(Schedulers.io())
            .observeOn(Schedulers.io())
            .flatMap(new Func1<ResponseBody, Observable<ResponseBody>>() {
                @Override
                public Observable<ResponseBody> call(ResponseBody responseBody) {
                    return TwoType;
                }
            }).doOnNext(new Action1<ResponseBody>() {
        @Override
        public void call(ResponseBody responseBody) {
            Gson gson = new Gson();
            try {
                TwoBean twoBean = gson.fromJson(responseBody.string(), TwoBean.class);
                List<TwoBean.ResultBean> list = twoBean.getResult();
                String id = list.get(0).getId();
                ThreeType = myReApi.OneGET("commodity/v1/findCommodityByCategory?page=1&count=10&categoryId="+id);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }).flatMap(new Func1<ResponseBody, Observable<ResponseBody>>() {
        @Override
        public Observable<ResponseBody> call(ResponseBody responseBody) {
            return ThreeType;
        }




    }).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<ResponseBody>() {
                @Override
                public void call(ResponseBody responseBody) {
                    try {
                        myCallback.OkSeeces(responseBody.string());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
}

public interface MyCallback {
    void OkSeeces(String seeces);
    void OkError(String error);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值