Commit db02b1ce authored by yinjiacheng's avatar yinjiacheng

fix B端网络服务非加密接口请求结果解析异常

parent 688776c4
package com.yidian.bcommon.http
import com.google.gson.Gson
import com.google.gson.JsonParseException
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.constant.ResultCode
import com.yidian.bcommon.sdk.BCommonManager
import com.yidian.utils.ToastUtil
import io.reactivex.rxjava3.core.Observer
import io.reactivex.rxjava3.disposables.Disposable
import timber.log.Timber
/**
* author: yinjiacheng
* date: 7/13/21 9:00 AM
* description: 网路请求解析
* 非商户后台使用
* 非加密接口使用
*/
abstract class HttpResultObserver<T> : Observer<HttpResult<T>> {
private val gson by lazy { Gson() }
private var isShowErrorMsg = true
override fun onSubscribe(d: Disposable) { //网络请求之前
......@@ -45,11 +50,15 @@ abstract class HttpResultObserver<T> : Observer<HttpResult<T>> {
}
override fun onNext(result: HttpResult<T>) {
if (result.code == 0) {
onRequestSuccess(result)
} else {
onFailure(result)
ToastUtil.showToast(YdBaseApplication.context, result.reason ?: "网络请求失败")
when (result.code) {
ResultCode.SUCCESS -> {
Timber.tag(BCommonManager.TAG_HTTP).d("response result: ${gson.toJson(result.result)}")
onRequestSuccess(result)
}
else -> {
onFailure(result)
ToastUtil.showToast(YdBaseApplication.context, result.reason ?: "网络请求失败")
}
}
}
......
......@@ -35,10 +35,18 @@ class BNAHttpReqService : ZapService() {
//发起请求
when (method) {
"GET", "get" -> {
BNARemoteDataSource.launchGetRequest(iMBRequestCallBackImpl, paramsMap, url, isEncrypt, resolver)
if (isEncrypt) {
BNARemoteDataSource.launchEncryptGetRequest(iMBRequestCallBackImpl, paramsMap, url, resolver)
} else {
BNARemoteDataSource.launchGetRequest(iMBRequestCallBackImpl, paramsMap, url, resolver)
}
}
"POST", "post" -> {
BNARemoteDataSource.launchPostRequest(iMBRequestCallBackImpl, paramsMap, url, isEncrypt, resolver)
if (isEncrypt) {
BNARemoteDataSource.launchEncryptPostRequest(iMBRequestCallBackImpl, paramsMap, url, resolver)
} else {
BNARemoteDataSource.launchPostRequest(iMBRequestCallBackImpl, paramsMap, url, resolver)
}
}
else -> {
resolver.fail(-1000, "request error", "不支持的请求方式")
......
package com.yidian.shenghuoquan.bgeneralbusiness.service.net
import com.yidian.bcommon.http.HttpParamsUtils
import com.yidian.bcommon.http.HttpResult
import com.yidian.bcommon.http.HttpResultSubscriber
import com.yidian.bcommon.http.TransformUtil
import com.yidian.bcommon.http.*
import com.yidian.http.ServiceFactory
import com.yidian.shenghuoquan.bgeneralbusiness.service.net.callback.IBNARequestCallBack
import com.yidian.xarc.xrouter.ResultResolver
......@@ -12,21 +9,74 @@ object BNARemoteDataSource {
/**
* 发起get请求
* 加密接口
*/
fun launchEncryptGetRequest(
apiCallback: IBNARequestCallBack,
requestParams: HashMap<String, String?>,
url: String,
resolver: ResultResolver
) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
ServiceFactory.getInstance().createService(BNAService::class.java)
.mbGetRequest(url, publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.getRequestSuccess(result, resolver)
}
override fun onFailure(result: HttpResult<Any?>?) {
apiCallback.getRequestFailure(result, resolver)
}
})
}
/**
* 发起get请求
* 不加密接口
*/
fun launchGetRequest(
apiCallback: IBNARequestCallBack,
requestParams: HashMap<String, String?>,
url: String,
isEncrypt: Boolean,
resolver: ResultResolver
) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap =
if (isEncrypt) HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp) else HttpParamsUtils.getPrivateParamsMap(requestParams)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams)
ServiceFactory.getInstance().createService(BNAService::class.java)
.mbGetRequest(url, publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultObserver<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.getRequestSuccess(result, resolver)
}
override fun onFailure(result: HttpResult<Any?>?) {
apiCallback.getRequestFailure(result, resolver)
}
})
}
/**
* 发起post请求
* 加密接口
*/
fun launchEncryptPostRequest(
apiCallback: IBNARequestCallBack,
requestParams: HashMap<String, String?>,
url: String,
resolver: ResultResolver
) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
ServiceFactory.getInstance().createService(BNAService::class.java)
.mbPostRequest(url, publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.getRequestSuccess(result, resolver)
......@@ -40,22 +90,21 @@ object BNARemoteDataSource {
/**
* 发起post请求
* 不加密接口
*/
fun launchPostRequest(
apiCallback: IBNARequestCallBack,
requestParams: HashMap<String, String?>,
url: String,
isEncrypt: Boolean,
resolver: ResultResolver
) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap =
if (isEncrypt) HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp) else HttpParamsUtils.getPrivateParamsMap(requestParams)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams)
ServiceFactory.getInstance().createService(BNAService::class.java)
.mbPostRequest(url, publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() {
.subscribe(object : HttpResultObserver<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.getRequestSuccess(result, resolver)
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment