12. ⽹络请求
{"module": {......"requestPermissions": [{"name": 'ohos.permission.******'}]}}
第⼆步:申请授权
-
如果⽬标权限的授权⽅式为system_grant,开发者在完成第⼀步后,系统会在安装应⽤时⾃动为其进⾏权限预授予,开发者不需要做其他操作即可使⽤权限。
-
如果⽬标权限的授权⽅式为是user_grant,开发者在完成第⼀步后,还需要在应⽤运⾏时弹窗请求⽤户授权,具体操作可参考官⽅⽂档
由于⽹络访问权限的授权⽅式为system_grant,因此只需完成第⼀步即可,具体内容如下
{"module": {......"requestPermissions": [{"name": 'ohos.permission.INTERNET'}]}}
12.2. 安装axios库
ohpm i @ohos/axios
import axios from '@ohos/axios'
const instance = axios.create({baseURL: 'http://<ip>:<port>',timeout: 2000
})
第三步:发送http请求
创建axios实例后,便可通过该实例的api来发送各种http请求,常⽤的api定义如下
api | 功能 |
get(url, config?): Promise | 发送GET请求 |
delete(url, config?): Promise | 发送DELETE请求 |
post(url,data?,config?): Promise | 发送POST请求 |
put(url,data?,config?): Promise | 发送PUT请求 |
第四步:获取请求结果
上述api的返回值类型均为Promise,Promise是JavaScript中⽤于表示异步操作结果的对象,若操作成功,其中会包含具体结果,若操作失败,其会包含错误的原因。在实际应⽤中,开发者可以通过该对象的then()⽅法来处理操作成功时的结果,通过catch()⽅法来处理操作失败的情况,例如
get(...).then((response:AxiosResponse)=>{//处理请求成功的结果...}).catch((error:AxiosError)=>{//处理请求失败的错误...})
AxiosResponse是axios定义的响应结果类型,默认情况下,通过axios发送的所有请求,其成功的响应结果都是该类型。其包含的属性如下
{//服务器返回的响应结果data: {},//服务器响应的 HTTP 状态码status: 200,//服务器响应的 HTTP 状态信息statusText: 'OK',// 服务器响应头headers: {},//axios请求的配置信息config: {},//⽣成此响应的请求信息request: {}
}
get(...).then((response:AxiosResponse)=>{//获取服务器返回的数据let data = response.data;//处理服务器返回的数据...}).catch((error:AxiosError)=>{//处理请求失败的错误...})
// 添加请求拦截器
instance.interceptors.request.use((config:InternalAxiosRequestConfig) => {// 对请求数据做点什么return config;
}, (error:AxiosError) => {// 对请求错误做些什么return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use((response:AxiosResponse)=> {// 对响应数据做点什么return response;
}, (error:AxiosError)=> {// 对响应错误做点什么return Promise.reject(error);
});
最后,如果这篇文章对你有所帮助请 “点赞 收藏+关注” ,感谢支持!祝您编码愉快