---------------------------------------使用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 {
}
} );
}
}