Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
GaoQuYingJiH5-ASD
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
xinzhedeai
GaoQuYingJiH5-ASD
Commits
405ccd85
Commit
405ccd85
authored
Jun 19, 2025
by
xinzhedeai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add:retry http
parent
fe84681d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
153 additions
and
0 deletions
+153
-0
http4retry.js
sdk/http4retry.js
+153
-0
No files found.
sdk/http4retry.js
0 → 100644
View file @
405ccd85
/** 爱山东网管请求封装
* 请求拦截、相应拦截、错误统一处理
*/
const
BASE_URL
=
'
https://gqyjpt.weihai.cn/prod-api
'
// var errors = []
// if(localStorage.getItem('wenti')){
// errors = JSON.parse(localStorage.getItem('wenti'))
// }
// localStorage.setItem('wenti', JSON.stringify(errors))
var
http2
=
{
// 2025年6月19日15 新增重试配置参数
post
:
function
(
params
,
fn
,
retryOptions
=
{
maxRetry
:
3
,
delay
:
1000
})
{
// 保存原始参数(用于重试时恢复)
const
originalParams
=
{
...
params
};
let
currentRetry
=
0
;
// 当前重试次数
// 定义实际执行请求的函数(支持重试)
const
executeRequest
=
()
=>
{
// 每次重试前恢复原始参数(防止参数被修改)
params
=
{
...
originalParams
};
/**
* 网关验签接口
* @param {1} = appid应用唯一标识
* @param {2} = interfaceid接口唯一标识
* @param {3} = data接口参数,请使用json格式, 例如:{"siteid":"2","cateid":"1"}
* @param {4} = fromport端口来源"0":PC;"1":APP;"2":支付宝;"3":微信
* @param {5} = extraData 额外参数,附件,请求头一类的参数
*
*/
const
data
=
SM
.
encrypt
(
JSON
.
stringify
(
params
.
reqParams
),
params
.
interfacePublicKey
)
// console.log('http请求普通参数前', params.reqParams)
// console.log('http请求参数加密后', data)
const
extraData
=
{
// 公共请求头设置
// header: {
// // Authorization: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI0ODA3ODFkZmQxYmE0MmM0OGQyZDQ5NTllYzcyYTUwNCIsInVzZXIiOiJqYyIsInN1YiI6ImpjIn0.WfLq11T7iWPiMuzqDY2N54aIqdv-ciYCe6pINqQAeBdqlMiJmkufsqlD2YMmUzsHA-o4WerkiSYnPzexEMiAJA"
// // Authorization: localStorage.getItem('token')
// Authorization: gemhoUtil.getCookie('token')
// },
verificationHeaders
:
{
// 二次核验请求头
interfaceTicket
:
gemhoUtil
.
getCookie
(
'
ticket
'
),
},
}
// if (gemhoUtil.getCookie('token')) {
extraData
.
header
=
{
Authorization
:
gemhoUtil
.
getCookie
(
'
token
'
)
// Authorization:
// 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiMTU4YjM0M2MtNTFmMS00ZDYzLTk0ZWUtNzcxZWRkYTAxMjFmIn0.ehBDVx2ldKNypKcQ4Vnzzii7Dy9El8gRBRQ1Fs_Lq0tkp-zCxSHoEesF5YsWD5weKSaYdAYj_3gXQk-P832QrA',
// }
}
if
(
params
.
fileList
)
{
// 用于接口传递的额外参数 如文件流等){
extraData
.
fileList
=
params
.
fileList
}
// console.log('http请求额外参数', JSON.stringify(extraData))
// console.log('http2方法进来了~extraData', extraData)
// vaildInterfacefn("gqyjglptxiefn", params.serviceId, data, "1", "https://" + urldomaincreatesign, "https://" + urldomaingateway).then((value) => {
vaildInterfacefn
(
'
gqyjglptxiefn
'
,
params
.
serviceId
,
data
,
'
1
'
,
extraData
).
then
((
value
)
=>
{
/**
* code: 200
data: "048b04671ad85e52e" // value 值就是接口返回的data值
msg: "请求成功"
success: true
*/
if
(
!
value
)
{
// var errors = JSON.parse(localStorage.getItem('wenti'))
// errors.push('中台发生了错误-中台value为undefined')
// localStorage.setItem('wenti', JSON.stringify(errors))
// vant.Dialog.alert({
// title: '信息提示',
// message: '网络异常, 请重试',
// // message: '请求异常'
// })
// fn && fn(null) // 2025年6月19日 针对中台偶尔null问题,进行重试请求处理
// 可重试的错误类型
if
(
currentRetry
<
retryOptions
.
maxRetry
)
{
currentRetry
++
;
console
.
log
(
`请求失败,第
${
currentRetry
}
次重试...`
);
setTimeout
(
executeRequest
,
retryOptions
.
delay
);
}
else
{
console
.
log
(
'
超过最大重试次数,请求终止
'
);
fn
&&
fn
(
null
,
error
.
message
);
}
return
}
let
sm2_encrypt_result
=
value
// 后台返回待解密内容
let
sm2_decrypt_result
=
sm2_Decrypt
(
sm2_encrypt_result
,
params
.
interfacePrivateKey
)
// console.log('vaildInterfacefn响应解密', sm2_decrypt_result)
if
(
!
sm2_decrypt_result
)
{
// 解密为空字符串
// var errors = JSON.parse(localStorage.getItem('wenti'))
// errors.push('中台发生了错误-解密为空')
// localStorage.setItem('wenti', JSON.stringify(errors))
fn
&&
fn
(
null
,
'
decrypt
'
)
return
}
const
decryptRes
=
JSON
.
parse
(
sm2_decrypt_result
)
console
.
log
(
'
当前请求参数
'
,
params
.
reqParams
,
'
当前请求返回值
'
,
decryptRes
)
if
(
decryptRes
.
code
===
400
||
decryptRes
.
code
===
401
||
decryptRes
.
status
===
401
)
{
gemhoUtil
.
setCookie
(
'
token
'
,
''
)
// 清空token
vant
.
Dialog
.
alert
({
title
:
'
信息提示
'
,
message
:
decryptRes
.
msg
||
decryptRes
.
message
,
}).
then
(()
=>
{
// confirm按钮回调
if
(
gemhoUtil
.
getPageName
()
===
'
index
'
)
{
lightAppJssdk
.
navigation
.
close
({
success
:
function
(
data
)
{
//成功回调
console
.
log
(
'
关闭页面
'
)
},
fail
:
function
(
data
)
{
console
.
log
(
'
关闭失败
'
)
},
})
}
else
{
gemhoUtil
.
navigatePage
(
'
../index.html
'
)
}
})
return
}
fn
&&
fn
(
sm2_decrypt_result
)
})
}
// 首次执行请求
executeRequest
();
},
}
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