Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
db02b1ce
Commit
db02b1ce
authored
Sep 08, 2021
by
yinjiacheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix B端网络服务非加密接口请求结果解析异常
parent
688776c4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
19 deletions
+85
-19
HttpResultObserver.kt
...c/main/java/com/yidian/bcommon/http/HttpResultObserver.kt
+15
-6
BNAHttpReqService.kt
...huoquan/bgeneralbusiness/service/net/BNAHttpReqService.kt
+10
-2
BNARemoteDataSource.kt
...oquan/bgeneralbusiness/service/net/BNARemoteDataSource.kt
+60
-11
No files found.
CommonLib/BCommon/src/main/java/com/yidian/bcommon/http/HttpResultObserver.kt
View file @
db02b1ce
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
?:
"网络请求失败"
)
}
}
}
...
...
Components/BGeneralBusiness/src/main/java/com/yidian/shenghuoquan/bgeneralbusiness/service/net/BNAHttpReqService.kt
View file @
db02b1ce
...
...
@@ -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"
,
"不支持的请求方式"
)
...
...
Components/BGeneralBusiness/src/main/java/com/yidian/shenghuoquan/bgeneralbusiness/service/net/BNARemoteDataSource.kt
View file @
db02b1ce
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
:
HttpResult
Subscrib
er
<
Any
?>()
{
.
subscribe
(
object
:
HttpResult
Observ
er
<
Any
?>()
{
override
fun
onSuccess
(
result
:
HttpResult
<
Any
?
>?)
{
apiCallback
.
getRequestSuccess
(
result
,
resolver
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment