Commit db02b1ce authored by yinjiacheng's avatar yinjiacheng

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

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