java 模拟android请求,ApiMock:基于Retrofit2+Rxjava2模拟api数据请求
在需要模拟数据的module中添加依赖:(也可移步 Github源码地址)dependencies {implementation 'com.android.util:apimock:1.0.1'}注意: 项目需要引入以下库(版本号可不一致):implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'io.react
在需要模拟数据的module中添加依赖:(也可移步 Github源码地址)
dependencies {
implementation 'com.android.util:apimock:1.0.1'
}
注意: 项目需要引入以下库(版本号可不一致):
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation "io.reactivex.rxjava2:rxjava:2.1.14"
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
在Application的onCreate方法中初始化,方法如下:
ApiMock.init(this, "mockdata.json");
或者
ApiMock.init(this, "mockdata.json","http://10.181.52.38:8081/html/mockdata.json");
/**
* 初始化mock数据源
* @param context
* @param fileName assets文件夹下文件名称
* @param mockDataUrl 远程mockdata文件地址(不填或者为空则默认从本地assets获取)
*/
public static void init(Context context, String fileName, String mockDataUrl)
其中的mockdata.json文件是定义在assets文件夹下的mock数据, 第三个参数mockDataUrl是模拟数据存放的远程地址(比如存放在远程或者本地服务器中),不填或者为空则默认从本地assets获取。
模拟数据文件mockdata.json格式如下(字段名称可根据需要修改):(此处的common/getversion 是指对应Retrofit中注解的api的path部分)
{
"common/getversion": {
"code": 200,
"message": "测试一下",
"data": {
"version": "5.2.0",
"url": "http://test.com/test.apk",
"description": "1. 全新UI体验\r\n2. 优化性能,修复已知问题",
"forceUpdate": false
}
}
}
在项目中使用apimock去模拟需要的数据
ApiMock.getApiService(Constants.BASE_URL, ApiService.class)
.getversion()
.subscribe(new Consumer>() {
@Override
public void accept(BaseResponse versinfon) throws Exception {
Toast.makeText(MainActivity.this, versinfon.data.toString(),
Toast.LENGTH_SHORT).show();
}
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
Toast.makeText(MainActivity.this, "onFailure:"+throwable.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
});
更多推荐
所有评论(0)