android 有序的网络请求,GitHub - Anima18/RequestManager: RequestManager是一个Android的网络请求框架,通过解耦请求者和响应者简化多重网络传递...

RequestManager是一个Android的网络请求框架,通过解耦请求者和响应者简化多重网络传递。支持kotlin和Java。

支持单一请求

数据请求,支持GET和POST请求

支持请求数据解析和自定义解析

支持请求提示框自动显示和关闭

支持请求取消

支持页面退出取消页面所有请求

支持网络请求流

网络请求流是指多个单一请求的串行或者并行,包括:

顺序请求,先发送请求一再发送请求二,返回结果保证请求顺序

并发请求,同时发送请求一和请求二,返回结果保证请求顺序

支持请求管理

在发送单一请求或者多重请求时,会自动显示loading提示框,请求结束后会自动关闭。在请求过程中,如果手动关闭loading提示框,会取消请求。

安装

示例

单一网络请求

有3个方法:

getObject,返回单一数据对象

getList, 返回数据对象列表

getPageData, 返回分页数据对象列表和总数目

getObject

Kotlin

NetworkRequest(this)

.url("http://xxxx/userright/loginVerify.do")

.coroutineScope(this)

.addParam("username", "xxx")

.addParam("pwd", "xxxx")

.method(RequestParam.Method.POST)

.dataClass(UserInfo::class.java)

.loadingMessage("正在登录中,请稍后...")

.getObject(object :DataObjectCallback {

override fun onSuccess(data: UserInfo) {

Toast.makeText(this@MainActivity, data.user.userName, Toast.LENGTH_SHORT).show()

}

override fun onFailure(message: String) {

Toast.makeText(this@MainActivity, message, Toast.LENGTH_SHORT).show()

}

})

Java

new NetworkRequest(this)

.url("http://xxxx/userright/loginVerify.do")

.addParam("username", "xx")

.addParam("pwd", "xxx")

.method(RequestParam.Method.POST)

.dataClass(UserInfo.class)

.loadingMessage("正在登录中,请稍后...")

.getObject(new DataObjectCallback() {

@Override

public void onFailure(@NotNull String s) {

Log.i("dddddd", s);

}

@Override

public void onSuccess(UserInfo userInfo) {

Log.i("dddddd", userInfo.toString());

}

});

url 设置请求地址

addParam 设置请求参数

method 设置请求方式

dataClass 设置请求解析对象,具体请阅读请求解析

loadingMessage 设置请求提示,如果设置信息,会显示请求提示框,否则不会显示。

coroutineScope 设置请求域。具体请阅读请求管理

getList

Kotlin

NetworkRequest(this)

...

.getList(object: DataListCallback {

override fun onSuccess(t: List) {

Toast.makeText(this@MainActivity, "${t.size}", Toast.LENGTH_SHORT).show()

}

override fun onFailure(message: String) {

Toast.makeText(this@MainActivity, message, Toast.LENGTH_SHORT).show()

}

})

Java

new NetworkRequest(this)

...

.getList(new DataListCallback() {

@Override

public void onSuccess(@NotNull List extends MajorTable> list) {

Log.i("dddddd", list.toString());

}

@Override

public void onFailure(@NotNull String s) {

Log.i("dddddd", s);

}

});

getPageData

Kotlin

NetworkRequest(this)

...

.getPageData(object: DataPagingCallback {

override fun onSuccess(dataList: List, total: Int) {

Toast.makeText(this@MainActivity, "${total}", Toast.LENGTH_SHORT).show()

}

override fun onFailure(message: String) {

Toast.makeText(this@MainActivity, message, Toast.LENGTH_SHORT).show()

}

})

Java

new NetworkRequest(this)

...

.getPageData(new DataPagingCallback() {

@Override

public void onSuccess(@NotNull List extends Defect> list, int i) {

Log.i("dddddd", list.toString());

}

@Override

public void onFailure(@NotNull String s) {

Log.i("dddddd",s);

}

});

网络请求流

顺序请求

val request1 = NetworkRequest(this)

.url("https://api.github.com/users/yeasy/followers?page=1")

.method(RequestParam.Method.GET)

.dataClass(GitHubUser::class.java)

.dataParser(GitHubUserParser())

.create()

var request2 = NetworkRequest(this)

.url("http://xxx/utdtpower/datasource/getOptionsOfDatasource.do")

.addParam("datasourceFcode", "majortableFcode")

.method(RequestParam.Method.POST)

.dataClass(MajorTable::class.java)

.dataFormat(RequestParam.DataFormat.LIST)

.create()

val request3 = NetworkRequest(this)

.url("http://xxxx/userright/loginVerify.do")

.addParam("username", "xxx")

.addParam("pwd", "xxx")

.method(RequestParam.Method.POST)

.dataClass(UserInfo::class.java)

.dataFormat(RequestParam.DataFormat.OBJECT)

.create()

val request4 = NetworkRequest(this)

.url("http://xxxx/utqx/getQueryData.do?rows=30&page=1&sidx=utdtversion&sord=desc")

.method(RequestParam.Method.GET)

.dataClass(Defect::class.java)

.dataFormat(RequestParam.DataFormat.PAGELIST)

.create()

RequestStream.create(this).showMessage("顺序请求...").sequence(request1, request2, request3, request4).collect(object: RequestStream.OnCollectListener {

override fun onSuccess(dataList: List) {

Toast.makeText(this@MainActivity, "${dataList.size}", Toast.LENGTH_SHORT).show()

}

override fun onFailure(message: String) {

Toast.makeText(this@MainActivity, message, Toast.LENGTH_SHORT).show()

}

})

通过create方法创建一个待请求对象

sequence方法把请求添加到顺序请求列表

parallel方法把请求添加到并发请求列表

collect方法把请求列表的结果按顺序收集

请求解析

请求管理

Author

License

RequestManager is available under the MIT license. See the LICENSE file for more info.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值