Toggle navigation
Toggle navigation
This project
Loading...
Sign in
developOne
/
harmonyPool
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhangbo1_wd
2024-04-25 12:33:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8f88b2def16d58b5cbd3758a0f9e35473c97bb0a
8f88b2de
1 parent
2fabef43
刷新token逻辑调试;新增接口错误回调封装
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
36 deletions
sight_harmony/commons/wdNetwork/Index.ets
sight_harmony/commons/wdNetwork/src/main/ets/bean/ResposeError.ets
sight_harmony/commons/wdNetwork/src/main/ets/http/AxiosRequest.ets
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpBizUtil.ets
sight_harmony/commons/wdNetwork/Index.ets
View file @
8f88b2d
export { ResponseDTO } from "./src/main/ets/bean/ResponseDTO"
export { ResposeError } from "./src/main/ets/bean/ResposeError"
export { HttpRequest as WDHttp } from "./src/main/ets/http/HttpRequest"
export { HttpUrlUtils } from "./src/main/ets/http/HttpUrlUtils"
...
...
sight_harmony/commons/wdNetwork/src/main/ets/bean/ResposeError.ets
0 → 100644
View file @
8f88b2d
/**
* 接口返回错误数据封装
*/
export class ResposeError {
code: number = -1;
message: string = '';
static buildError(message: string, code?: number): ResposeError {
let error = new ResposeError()
error.message = message
if (code) {
error.code = code
}
return error;
}
}
\ No newline at end of file
...
...
sight_harmony/commons/wdNetwork/src/main/ets/http/AxiosRequest.ets
View file @
8f88b2d
...
...
@@ -6,6 +6,7 @@ import axios, {
InternalAxiosRequestConfig
} from '@ohos/axios';
import { Logger } from 'wdKit/Index';
import { ResposeError } from '../bean/ResposeError';
// import type ResponseDTO from '../models/ResponseDTO';
...
...
@@ -99,17 +100,16 @@ instance.interceptors.response.use(// 响应拦截器response类型就是Axios.r
},
(error: AxiosError) => {
// 异常响应
// console.log('全局响应失败拦截')
// console.log(error.request)
// console.log(error.response)
// 429-流量超标;403-临时token;406-token过期,强制下线
// 这里用来处理http常见错误,进行全局提示
let errorBean = new ResposeError()
if (error != null && error.response != null) {
let message = buildErrorMsg(error.response.status);
// 错误消息可以使用全局弹框展示出来
console.log(`httpStatus:${error.response?.status}-${message},请检查网络或联系管理员!`)
errorBean = buildError(error.response.status)
}
return Promise.reject(error);
return Promise.reject(errorBean);
}
);
...
...
@@ -161,3 +161,9 @@ function buildErrorMsg(httpStatus: number): string {
}
return message;
}
function buildError(httpStatus: number): ResposeError {
let message = buildErrorMsg(httpStatus);
let error: ResposeError = ResposeError.buildError(message, httpStatus)
return error;
}
...
...
sight_harmony/commons/wdNetwork/src/main/ets/http/HttpBizUtil.ets
View file @
8f88b2d
...
...
@@ -4,6 +4,7 @@ import HashMap from '@ohos.util.HashMap';
import { ResponseDTO } from '../bean/ResponseDTO';
import { HttpUrlUtils, WDHttp } from '../../../../Index';
import { RefreshTokenRes } from '../bean/RefreshTokenRes';
import { ResposeError } from '../bean/ResposeError';
const TAG: string = 'HttpBizUtil'
...
...
@@ -20,14 +21,12 @@ export class HttpBizUtil {
* @returns 返回值
*/
static get<T = ResponseDTO<string>>(url: string, headers?: HashMap<string, string>): Promise<T> {
return new Promise<T>((success,
debug
) => {
return new Promise<T>((success,
error
) => {
WDHttp.get<T>(url, headers).then((originalRes: T) => {
try {
let resDTO = originalRes as ResponseDTO
Logger.debug(TAG, 'get: ' + resDTO.code)
Logger.debug(TAG, 'get: ' + resDTO.message)
success(originalRes)
}).catch((res: ResposeError) => {
// 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面
if (resDTO.code == 403 || resDTO
.code == 406) {
if (res.code == 403 || res
.code == 406) {
HttpBizUtil.refreshToken().then((token: string) => {
if (headers) {
headers.replace('RMRB-X-TOKEN', token)
...
...
@@ -39,18 +38,14 @@ export class HttpBizUtil {
Logger.debug(TAG, 'get again: ' + againResDTO)
success(againResDTO)
}).catch((res: object) => {
debug(res
)
error(ResposeError.buildError(JSON.stringify(res))
)
})
});
} else {
success(originalRes)
}
} catch (e) {
debug(originalRes)
// 非403、406,直接抛出去
Logger.debug(TAG, 'get else: ' + JSON.stringify(res))
error(res)
}
}).catch((res: object) => {
debug(res)
})
})
}
...
...
@@ -63,34 +58,31 @@ export class HttpBizUtil {
* @returns 返回值
*/
static post<T = ResponseDTO<string>>(url: string, data?: object, headers?: HashMap<string, string>): Promise<T> {
return new Promise<T>((success,
debug
) => {
return new Promise<T>((success,
error
) => {
WDHttp.post<T>(url, data, headers).then((originalRes: T) => {
try {
let resDTO = originalRes as ResponseDTO
Logger.debug(TAG, 'post: ' + resDTO.code)
Logger.debug(TAG, 'post: ' + resDTO.message)
success(originalRes)
}).catch((res: ResposeError) => {
// 403:临时token;406:强制下线、封禁、清空登录信息还要跳转登录页面
if (resDTO.code == 403 || resDTO.code == 406) {
Logger.debug(TAG, 'post catch error: ' + JSON.stringify(res))
if (res.code == 403 || res.code == 406) {
HttpBizUtil.refreshToken().then((token: string) => {
if (headers) {
headers.replace('RMRB-X-TOKEN', token)
headers.replace('cookie', 'RMRB-X-TOKEN=' + token)
}
Logger.debug(TAG, 'post again send: ' + token)
// refreshToken为空场景不处理,直接请求接口。
WDHttp.post<T>(url, headers).then((againResDTO: T) => {
WDHttp.post<T>(url, data, headers).then((againResDTO: T) => {
Logger.debug(TAG, 'post again success: ' + JSON.stringify(againResDTO))
success(againResDTO)
}).catch((res: object) => {
debug(res
)
error(ResposeError.buildError(JSON.stringify(res))
)
})
});
} else {
success(originalRes)
// 非403、406,直接抛出去
error(res)
}
} catch (e) {
success(originalRes)
}
}).catch((res: object) => {
debug(res)
})
})
}
...
...
@@ -104,9 +96,9 @@ export class HttpBizUtil {
params.set('refreshToken', HttpUrlUtils.getRefreshToken())
params.set('deviceId', HttpUrlUtils.getDeviceId())
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
Logger.debug(TAG, 'refreshToken getRefreshToken: ' + HttpUrlUtils.getRefreshToken())
// // 请求刷新token接口
return new Promise<string>((success, debug) => {
// Logger.debug(TAG, 'refreshToken getRefreshToken: ' + HttpUrlUtils.getRefreshToken())
// 请求刷新token接口
return new Promise<string>((success, error) => {
WDHttp.post<ResponseDTO<RefreshTokenRes>>(url, params, headers).then((resDTO: ResponseDTO<RefreshTokenRes>) => {
let newToken = ''
if (resDTO) {
...
...
@@ -126,6 +118,7 @@ export class HttpBizUtil {
Logger.debug(TAG, 'refreshToken refreshToken: ' + resDTO.data.refreshToken)
}
}
Logger.debug(TAG, 'refreshToken last jwtToken: ' + newToken)
success(newToken)
});
})
...
...
Please
register
or
login
to post a comment