2024-11-20 13:45:49 +08:00

96 lines
2.6 KiB
Plaintext

import Prompt from '@system.prompt';
import http from '@ohos.net.http';
enum RequestMethod {
OPTIONS = "OPTIONS",
GET = "GET",
HEAD = "HEAD",
POST = "POST",
PUT = "PUT",
DELETE = "DELETE",
TRACE = "TRACE",
CONNECT = "CONNECT"
}
const BaseUrl = ""
interface Response {
code: number,
data: any,
msg: string
}
export async function request<T>(
url: string,
config: {
method: string;
params?: any;
data?: any
[key: string]: any
}
): Promise<T> {
const httpRequest = http.createHttp();
return new Promise((resolve, reject) => {
console.info("start request url: ", url, "request params: ", JSON.stringify(config.params || config.data || {}))
httpRequest.request(BaseUrl + url,
{
method: config.method as RequestMethod,
header: {
...config.header,
},
extraData: {
...(config.params || {}),
...(config.data || {})
},
expectDataType: http.HttpDataType.OBJECT,
connectTimeout: 60000, //超时时间
}).then(async (data) => {
let result = data.result as Response
if (result.code === 1) {
console.info("success request url: ", url)
console.info(JSON.stringify(result))
resolve(data.result as T)
} else if (result.code === 401) {
// console.error("401 request", url)
// let user = await PreferenceUtils.getUserModel()
// if (user?.isLogin) {
// userLoginUsingPost({
// account: user.account,
// psd: user.password,
// }).then(res => {
// let newUser: UserModel = new UserModel(res.data)
// newUser.account = user.account
// newUser.password = user.password
// newUser.isLogin = true
// PreferenceUtils.writeUserData(newUser)
// request(url, config)
// }).catch(() => {
// PreferenceUtils.writeUserData(new UserModel())
// if (router.getState().name !== "Login") {
// router.pushUrl({ url: "pages/Login" })
// }
// })
// } else {
// PreferenceUtils.writeUserData(new UserModel())
// if (router.getState().name !== "Login") {
// router.pushUrl({ url: "pages/Login" })
// }
// }
} else {
console.error("error request url: ", url)
console.error(result.msg)
reject(result.msg)
Prompt.showToast({
message: result.msg,
duration: 2000,
})
}
}).catch((err) => {
console.error("error request url: ", BaseUrl + url)
console.error(err)
reject(err)
})
});
}