96 lines
2.6 KiB
Plaintext
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)
|
|
})
|
|
|
|
});
|
|
} |