当前位置: 首页 > news >正文

做粉丝网站中国电影家协会会员

做粉丝网站,中国电影家协会会员,代做网站关键词排名,有哪些学校的网站做的好目录 前言http网络库组件介绍http网络库封装创建Har Module创建RequestOption 配置类创建HttpCore核心类创建HttpManager核心类对外组件导出添加网络权限 http网络库依赖和使用依赖http网络库#xff08;httpLibrary#xff09;使用http网络库#xff08;httpLibrary#x… 目录 前言http网络库组件介绍http网络库封装创建Har Module创建RequestOption 配置类创建HttpCore核心类创建HttpManager核心类对外组件导出添加网络权限 http网络库依赖和使用依赖http网络库httpLibrary使用http网络库httpLibrary 前言 现在网上的应用基本都是网络应用需要进行联网获取数据而常用的联网获取数据的方式有http、socket、websocket等。 在鸿蒙应用、服务中stage模式开发下鸿蒙官方为我们提供了一个网络组件库 http ,我们通过 import http from ‘ohos.net.http’; 即可以完成引用。 http网络库组件介绍 ohos.net.http (数据请求) 该组件提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 具体查看官网 通过官网的介绍可以很快上手该组件的使用下面我们对该网络库进行简单的封装方便我们的使用 http网络库封装 网络库工程结构如下图 具体步骤如下 创建Har Module创建RequestOption请求配置类创建HttpCore核心类创建HttpManager对外管理类对外组件导出添加网络权限 创建Har Module 我们创建一个Module 类型选择为Har3.1Beta IDE选择 Visual Library这里我们创建module名称为 httpLibrary。 创建RequestOption 配置类 代码如下 /*** pre* desc : 网络请求配置* /pre*/ export interface RequestOptions {/*** Request url.*/url?: string;/*** Request method.*/method?: RequestMethod; // default is GET/*** Request url queryParams .*/queryParams ?: Recordstring, string;/*** Additional data of the request.* extraData can be a string or an Object (API 6) or an ArrayBuffer(API 8).*/extraData?: string | Object | ArrayBuffer;/*** HTTP request header.*/header?: Object; // default is content-type: application/json}export enum RequestMethod {OPTIONS OPTIONS,GET GET,HEAD HEAD,POST POST,PUT PUT,DELETE DELETE,TRACE TRACE,CONNECT CONNECT }这里字段大家可自行拓展我这里简单添加了几个常用字段包括url、urlParams、header、extraData、大家也可以增加一些诸如UserAgent之类的网络配置。 创建HttpCore核心类 该类使我们这个网络库的主要核心代码实现主要封装’ohos.net.http的API调用提供便捷使用的API。 import http from ohos.net.http; import { RequestOptions } from ./RequestOptions;/*** Http请求器*/ export class HttpCore {/*** 发送请求* param requestOption* returns Promise*/requestT(requestOption: RequestOptions): PromiseT {return new PromiseT((resolve, reject) {this.sendRequest(requestOption).then((response) {if (typeof response.result ! string) {reject(new Error(Invalid data type));} else {let bean: T JSON.parse(response.result);if (bean) {resolve(bean);} else {reject(new Error(Invalid data type,JSON to T failed));}}}).catch((error) {reject(error);});});}private sendRequest(requestOption: RequestOptions): Promisehttp.HttpResponse {// 每一个httpRequest对应一个HTTP请求任务不可复用let httpRequest http.createHttp();let resolveFunction, rejectFunction;const resultPromise new Promisehttp.HttpResponse((resolve, reject) {resolveFunction resolve;rejectFunction reject;});if (!this.isValidUrl(requestOption.url)) {return Promise.reject(new Error(url格式不合法.));}let promise httpRequest.request(this.appendQueryParams(requestOption.url, requestOption.queryParams), {method: requestOption.method,header: requestOption.header,extraData: requestOption.extraData, // 当使用POST请求时此字段用于传递内容expectDataType: http.HttpDataType.STRING // 可选指定返回数据的类型});promise.then((response) {console.info(Result: response.result);console.info(code: response.responseCode);console.info(header: JSON.stringify(response.header));if (http.ResponseCode.OK ! response.responseCode) {throw new Error(http responseCode !200);}resolveFunction(response);}).catch((err) {rejectFunction(err);}).finally(() {// 当该请求使用完毕时调用destroy方法主动销毁。httpRequest.destroy();})return resultPromise;}private appendQueryParams(url: string, queryParams: Recordstring, string): string {// todo 使用将参数拼接到url上return url;}private isValidUrl(url: string): boolean {//todo 实现URL格式判断return true;} }export const httpCore new HttpCore(); 代码讲解 expectDataType: http.HttpDataType.STRING这里固定了返回数据为string大家也可以通过RequestOptions中定义字段传入这里定义为string只是方便后续的string转Bean定义sendRequest方法。对请求配置进行处理这里进行对Url进行格式判断如果非正确格式需要对外抛出错误需要进行Url参数拼接可对请求参数、请求结果进行日志打印对Http响应码进行判断按200和非200请求码进行分类返回。定义 request 进行请求结果转Bean的处理这里默认返回数据为JSON 字符串其他类型自行拓展该方法也是对外的唯一函数。 创建HttpManager核心类 import { RequestOptions } from ./RequestOptions; import { httpCore as HttpCore } from ./HttpCore; /*** pre* desc : 对外管理器* /pre*/ export class HttpManager {private static mInstance: HttpManager;// 防止实例化private constructor() {}static getInstance(): HttpManager {if (!HttpManager.mInstance) {HttpManager.mInstance new HttpManager();}return HttpManager.mInstance;}requestT(option: RequestOptions): PromiseT {return HttpCore.request(option);} } HttpManager 为对外API调用入口类提供单例对象跟发送请求API。 对外组件导出 在httpLibrary模块的根目录下有一个 index.ets文件在该文件中进行需要对外导出的组件定义 export { HttpManager } from ./src/main/ets/http/HttpManager; export { RequestMethod } from ./src/main/ets/http/RequestOptions; 到这里我们就完成了一个简易的网络库封装我们可以将该module导出Har包对外提供也可以直接在项目中使用该module。 添加网络权限 漏了一点这里记得为该网络库添加上网络权限哦在module.json5文件中 requestPermissions: [{name: ohos.permission.INTERNET}]http网络库依赖和使用 依赖http网络库httpLibrary 打开entry下的 oh-package.json5文件增加如下依赖 dependencies: {ohos/http_library: file:../httpLibrary}使用http网络库httpLibrary 这里我们写一个例子使用该网络库进行发送一个get请求 在entry下任意页面中进行请求调用。 handleClick() {HttpManager.getInstance().requestTestBean({method: RequestMethod.GET,url: https://jsonplaceholder.typicode.com/todos/1 //公开的API}).then((result) {console.info(JSON.stringify(result));}).catch((err) {console.error(JSON.stringify(err));});}https://jsonplaceholder.typicode.com/todos/1 是一个公开的get请求API如果侵权请联系我删除谢谢 这里我们定一个了一个TestBean进行数据解析 /*** pre* desc : 测试Bean* /pre*/ export interface TestBean {/*** {userId: 1,id: 1,title: delectus aut autem,completed: false}*/userId: number,id: number,title: string,completed: boolean} 这样就完成了调用接着我们将应用装机点击获取数据按钮可以在log面板看到如下输出 文章到此结束需要Demo的或者是有问题交流的欢迎评论区留言。
http://www.w-s-a.com/news/106449/

相关文章:

  • 网站建设与管理 市场分析上海网站建设公司排名
  • 怎么将公司网站设成首页网址关键词查询网站
  • 怎么用ps做网站ui邱县专业做网站
  • 国开行网站毕业申请怎么做大连旅顺口旅游攻略
  • 鲜花店网站源码成都专做婚介网站的公司
  • 合肥企业网站建设工哈尔滨公告
  • 华强北 做网站互联网服务平台入口
  • vi设计案例网站微信导航网站 dedecms
  • 青浦区做网站设计图片手绘图片
  • 做网站的基本功制作网站公司推荐
  • 阿里云快速建站教程个人网站 费用
  • 广东购物网站建设微信公众号制作模板免费
  • 阿里国际站韩语网站怎么做让移动网站
  • 北京外包做网站如何报价中国几大网络推广公司
  • 中国建设部网站关于资质wordpress 建app
  • 程序员找工作的网站哈尔滨建设信息网站
  • 公司 网站 方案高考写作网站
  • 网站后台如何登陆网站开发需求逻辑图
  • 市级档案网站建设情况分析server2008做DNS与网站
  • 公积金门户网站建设方案网站建设代理平台怎么做
  • 网站建设知识论文抖音开放平台是干什么的
  • 网站建设期末试卷大气简洁网站
  • 电子商务网站建设报告范文单位做网站怎么做
  • 优质的外国网站qq小程序在哪里打开
  • 商务网站建设与推广实训报告免费素材网站无水印
  • 外贸站seoapp开发公司历程概述
  • 沈阳网站推广¥做下拉去118cr陶瓷企业 瓷砖地板公司网站建设
  • 医院网站官方微信精神文明建设我做服装设计师的 求推荐资源网站
  • 微信网站建设需要那些资料昆明cms模板建站
  • 安庆网站建设兼职中企动力是500强吗