Retrofit&&Retrofit_Rxjava两种方式请求网络数据

---------------------------------------使用Retrofit请求网络数据------------------------------------------------

1.依赖

// Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
//支持rxjava
    	implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
//Rxandroid
   	 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'

2.存放接口的类Api 接口地址只保留域名
public class Api {

//展示数据  原接口为:http://www.xieast.com/api/news/news.php?page=1
    public static final String ZHANSHI_URL = "http://www.xieast.com/api/";

}

3.新建一个接口–ApiServices
注意:GET请求方式用@GET注解,POST请求用@POST注解 括号里写域名后的地址
public interface ApiServices {

///收货地址列表(Retrofit请求)
    @GET("small/user/verify/v1/receiveAddressList")
    Call<AddressBean> getAddress(@Header( "userId" ) int userId, @Header( "sessionId") String sessionId);

//POST请求--登录
    @POST("small/user/v1/login")(Retrofit请求)
    Call<Login_Bean> getLogin(@Field( "phone" ) String phone, @Field( "pwd" ) String pwd);

}

4.M层
public class Model implements Contract_Interface.Model_Interface {

@Override
    public void getJson(int page, final CallBack_ZhanShi callBack_zhanShi) {
        //Retrofit---GET请求
       new Retrofit.Builder()
                .baseUrl( Constant.QUAN_URL )//根路径
                .addConverterFactory( GsonConverterFactory.create() )//支持Gson解析数据
                .build()
                .create( ApiServices.class )//创建APIServices类对象
                .getAddress( userId,sessionId )//调用ApiServices里的方法
                .enqueue( new Callback<AddressBean>() {
                    @Override
                    //成功的返回
                    public void onResponse(Call<AddressBean> call, Response<AddressBean> response) {
                        List<AddressBean.ResultBean> address_list = response.body().getResult();
                        callBack_address.responseData( address_list );
                    }

                    @Override
                    public void onFailure(Call<AddressBean> call, Throwable t) {

                    }
                } );
    }

}

------------------------------Retrofit+RxJava请求网络数据-------------------------------------
与Retrofit请求不同的地方有:

ApiServices接口中
public interface ApiServices {

//圈子列表(Retrofit+RxJava请求)
    @GET("small/circle/v1/findCircleList")
    Observable<QuanziBean> getQuanZi(@Header( "userId" ) int userId, @Header( "sessionId") String sessionId, @Query( "page" )int page, @Query( "count" )int count);
     //创建订单
    @POST("small/order/verify/v1/createOrder")
    Observable<Order_Bean> getOrder (@Header( "userId" )int userId,@Header( "sessionId" ) String sessionId,@Query("totalPrice") String totalPrice, @Query("addressId") int addressId, @Query("orderInfo") String orderInfo);

    //支付
    @POST("small/order/verify/v1/pay")
    Observable<Pay_Bean> getPay (@Header( "userId" )int userId, @Header( "sessionId" ) String sessionId, @Query("orderId") String orderId, @Query("payType") int payType);

    //查询购物车
    @GET("small/order/verify/v1/findShoppingCart")
    Observable<Cart_Bean> getCart (@Header( "userId" ) int userId, @Header( "sessionId" ) String sessionId);

    //同步购物车数据
    @PUT("small/order/verify/v1/syncShoppingCart")
    Observable<Sync_Bean> getSync (@Header( "userId" ) int userId, @Header( "sessionId" ) String sessionId,@Query( "data" ) String data);

//列表展示
	@GET("wap/data/news/news/mobile/jbgg/page_{page}")
    Observable<List<Show_Bean>> getShow(@Path( "page" )String page);

}

M层
public class Model_Quan implements Contract_Quan.Quan_Model_Interface {

@Override
    public void getJson(int userId, String sessionId, final CallBack_Quan callBack_quan) {
    	 //Retrofit+rxjava请求
        new Retrofit.Builder()
                .addConverterFactory( GsonConverterFactory.create() )//支持Gson解析数据
                .addCallAdapterFactory( RxJava2CallAdapterFactory.create() )//创建
                .baseUrl( Constant.QUAN_URL )//根路径
                .build()
                .create( ApiServices.class )//创建ApiServices类对象
                .getQuanZi( userId,sessionId,1,20 )//调用ApiServices的方法getQuanZi()并传参
                .subscribeOn( Schedulers.io() )
                .observeOn( AndroidSchedulers.mainThread() )
                .subscribe( new Consumer<QuanziBean>() {
                    @Override
                    public void accept(QuanziBean quanziBean) throws Exception {
                        callBack_quan.responseData(quanziBean.getResult());

                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {

                    }
                } );
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值