一、购物车网络嵌套
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);
}
}