企业网站做百度小程序,wordpress去掉首页,wordpress tag云显示数量,青岛招聘seo网络请求(http,axios) 目录 一、应用权限管理1.1权限的等级1.2授权方式1.3声明权限的配置1.4如何向用户进行申请 二、内置http请求使用三、Axios请求使用#xff08;建议#xff09;3.1 使用方式一3.2 使用方式二#xff08;建议#xff09; 一、应用权限管理 应用权限保护… 网络请求(http,axios) 目录 一、应用权限管理1.1权限的等级1.2授权方式1.3声明权限的配置1.4如何向用户进行申请 二、内置http请求使用三、Axios请求使用建议3.1 使用方式一3.2 使用方式二建议 一、应用权限管理 应用权限保护的对象分数据和功能的 数据个人(照片通讯录日历位置)、设备(标识码相机麦克风) 功能设备(摄像头/麦克风、电话、联网)、应用(悬浮窗、快捷方式、唤起第三方应用、后台运行) 1.1权限的等级 system_core 该等级提供应用服务操作系统的 - 核心能力 system_basic该等级提供应用服务的 - 基础服务 normal 普通的基本应用默认 1.2授权方式 system_grant系统授权 指的是系统类型的权限应用被允许访问的数据不会涉及到用户或设备的敏感信息 安装应用是应用会询问系统系统会自动进行授权。 user_grant用户授权 指的是涉及用户隐私或敏感数据的如果出现问题是不可控的。 应用安装后运行时会指定弹窗询问用户是否允许获取权限。 1.3声明权限的配置
在 entry/src/main/module.json5 配置文件中声明权限
例当不需要用户确认和用户确认运行都需要在requestPermissions[]中进行配置:1. 不需要用户确认:{name: ohos.permission.INTERNET //权限名称网络},
2. 用户确认 (当需要用户确认时填写配置信息会有提示不填则报错)
例在卡片Call机制中也用到了,保持后台应用
格式{name: ohos.permission.LOCATION, //定位reason: $string:reason_loc, //描述申请的原因user_grant时必填项因为需要国际化需要在语言文件中设置才可以usedScene: { //描述权限使用的场景user_grant时必填项abilities: [ EntryAbility ], //标识需要使用该权限的 Abilitywhen: always //标识使用的时机inuse只允许前台 always前后台都允许}1.4如何向用户进行申请
例:定位
import abilityAccessCtrl from ohos.abilityAccessCtrl; //权限控制管理onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {//唤醒用户授权窗口只有在user_grant情况下有效try{//创建一个权限管理对象const manager abilityAccessCtrl.createAtManager()//基于管理对象申请用户授权manager.requestPermissionsFromUser( this.context, [ohos.permission.LOCATION,ohos.permission.APPROXIMATELY_LOCATION,...] )}catch(err){promptAction.showToast({message:获取位置失败})}hilog.info(0x0000, testTag, %{public}s, Ability onCreate);}扩展请求方式 GET 短文本请求是一种不安全的请求所有的信息都暴露在地址栏中。 内容的上限是255个字节。 通常都是直接打开网址、超链接a它们使用。 POST 长文本请求是一种安全的请求基于http超文本传输协议的。 数据信息是通过TCP/IP请求协议进行处理的用户不可见。 数据上限2MB 如今我们有一个RestFul请求风格定义它扩展了更多的请求方式并不是所有后端服务器都支持 PUT本质还是post请求。DELETE本质还是get请求。二、内置http请求使用 可能会存在个版本不兼容问题建议使用Axios 1.开启网络权限: ohos.permission.INTERNET
2.导包: import http from ohos.net.http
3.请求://创建网络请求对象const httpRequest:http.HttpRequest http.createHttp()// 方式一:异步//异步方法:data就是响应回发的结果//httpRequest.request(url, {...}, (err,data){})// 方式二: 同步//转同步操作try{const res:http.HttpResponse await httpRequest.request(https://jsonplaceholder.typicode.com/users,{method: http.RequestMethod.GET} //get请求方式默认)//处理请求结果得到一个json对象console.info(http, res.responseCode) //状态码console.info(http, JSON.stringify(res.header)) //头部信息console.info(http, JSON.stringify(res.result)) //数据结果}catch(err){console.info(http, err)}finally{//不管成功还是失败最终始终关闭请求对象httpRequest.destroy()}封装工具包格式:// 内置http
import http from ohos.net.http
import promptAction from ohos.promptActionexport default class HttpUtils {// 青云客:(第三方)private static readonly path: string http://api.qingyunke.com// 美团:(个人)// https://atstudy-1253850831.cos.ap-shanghai.mygcloud.comstatic async httpRequest(url: string, method: http.RequestMethod http.RequestMethod.GET,extraData: string | Object | ArrayBuffer ): Promisehttp.HttpResponse {const link http.createHttp()let res: http.HttpResponse {} as http.HttpResponsetry {res await link.request(HttpUtils.path url, {method: method, extraData: extraData})} catch (err) {promptAction.showToast({message: 网络请求异常 JSON.stringify(err)})} finally {//不管成功还是失败最终始终关闭请求对象link.destroy()}return res//处理请求结果得到一个json对象// console.info(http, res.responseCode) //状态码// console.info(http, JSON.stringify(res.header)) //头部信息// console.info(http, JSON.stringify(res.result)) //数据结果}
}三、Axios请求使用建议 使用Axios需要安装ohpm中的 axios依赖或者在oh-package.json5 加入依赖 方式一根据命令安装ohpm install ohos/axios 方式二“ohos/axios”“^2.2.0” 3.1 使用方式一 直接调用get()post(), 不建议使用原因路径每次都是完整的有重复性 例:
开启网络权限: ohos.permission.INTERNET
导包: import axios from ohos/axios
axios.get(url,{params:{}})
axios.post(url)3.2 使用方式二建议 定义出来公用部分若不相同可以在调用时进行覆盖 例:
开启网络权限: ohos.permission.INTERNET
导包: import axios from ohos/axios
// 1.公共部分const cont axios.create({baseURL:https://atstudy-1253850831.cos.ap-shanghai.myqcloud.com, // 公用部分的url//transformRequest:(){}, // 发送请求前的操作函数 // 知道别用出错有点难找//transformResponse:(){}, // 接收结果 // 知道别用出错有点难找timeout:3*1000, // 请求超时时间headers:{} // 头部数据})// 格式 2.调用 cont.get() / cont.post()// 此处使用的异步也可以转为async同步cont.get(/lab-d3/harmonyOS/meituan/shop.json,{timeout:6*1000} // 重写超时时间).then((res: AxiosResponse) {if (res.status 200) { // 状态码res.data // 返回数据}}).catch((err: BusinessError) {promptAction.showToast({ message: get请求异常})}).finally(() { })Axios工具包:
当需要多个url时则就需要发生变更了使用构造传参方式就可以
import axios, { AxiosInstance } from ohos/axios
export default class AxiosUtils {// 青云客:(第三方)private static readonly path: string http://api.qingyunke.comprivate static link(): AxiosInstance {return axios.create({baseURL: AxiosUtils.path,timeout:3*1000, // 请求超时时间headers:{}, // 头部数据timeoutErrorMessage: 连接超时})}public static get(url: string,params:string ) {return AxiosUtils.link().get(url?params)}public static post(url: string,data:ResourceStr|object ) {return AxiosUtils.link().post(url,data)}
}