harmonyOS HTTP数据请求能用类
2023-12-13 05:47:28
通用类
import http from '@ohos.net.http';
// 调试开关
const Test: boolean = true;
// API 地址
const Url: string = Test ? 'http://api.林.cn/' : 'http://api.林.cn/';
export function request(api: string, method: string, data: any, token: string = ''): Promise<any> {
return new Promise((resolve, reject) => {
// 构建完整的 URL
const url = Url + api;
// 创建 http 模块实例
const httpRequest = http.createHttp();
// 根据 'method' 参数确定请求方法
const requestMethod = getRequestMethod(method);
// 要添加的额外标头
const customHeaders = {
'Content-Type': 'application/json',
'Authorization': token // 在这里添加您的自定义标头
};
// 发起 HTTP 请求
const promise = httpRequest.request(
url,
{
method: requestMethod,
extraData: data,
connectTimeout: 60000, // 60 秒
readTimeout: 60000,
header: { ...customHeaders } // 扩展自定义标头
}
);
// 处理 Promise 的解析
promise.then((responseData) => {
if (responseData.responseCode === http.ResponseCode.OK) {
resolve(responseData); // 使用响应数据解析 Promise
} else {
console.error('错误 - 响应代码: ' + responseData.responseCode);
reject(new Error('HTTP 请求失败,响应代码为 ' + responseData.responseCode));
}
}).catch((error) => {
console.error('错误: ' + JSON.stringify(error));
reject(error); // 使用错误拒绝 Promise
});
});
}
// 辅助函数,将方法字符串映射到 http.RequestMethod
function getRequestMethod(method: string): http.RequestMethod {
switch (method.toLowerCase()) {
case 'get':
return http.RequestMethod.GET;
case 'post':
return http.RequestMethod.POST;
case 'put':
return http.RequestMethod.PUT;
case 'delete':
return http.RequestMethod.DELETE;
// 针对其他 HTTP 方法需要添加更多的情况
default:
throw new Error(`不支持的 HTTP 方法: ${method}`);
}
}
调用方式
import { request } from '../tools/httpUtils';
@Entry //入口
@Component //装饰
struct Index {
@State message: string = '啾啾救援' //双向绑定
build() {
Row() {
Column() {
Image("http://www.jjsos.cn/images/menu_logo.png").width(300).interpolation(ImageInterpolation.High)
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('确定').fontSize(30).backgroundColor("#000").onClick(()=>{
this.message="JJSOS"
})
TextInput({placeholder:'用户名'}).type(InputType.PhoneNumber)
TextInput({placeholder:'密码'}).type(InputType.Password)
Button('确定登陆').onClick(()=>{
const requestData = {
"type": "1",
"username": "13176630659",
"password": "123456"
};
const authToken:string=""
const apiEndpoint = 'v2/auth/get-access-token';
request(apiEndpoint, 'post', requestData, authToken)
.then((responseData) => {
// 这时写代码
console.log('Response:', responseData);
// Perform actions based on the response
})
.catch((error) => {
// Handle errors
console.error('Error:', error);
// Perform error-specific actions
});
})
}
.width('100%').backgroundColor("#aaa")
}
.height('100%').backgroundColor("#aaa")
}
}
function authToken(apiEndpoint: string,arg1: string,requestData: { type: string; username: string; password: string; },authToken: any) {
throw new Error('Function not implemented.');
}
文章来源:https://blog.csdn.net/hzether/article/details/134888272
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!