不得不承认,年龄越大性格就越简单,更喜欢安静,不喜欢去了解别人,也不想被了解,只想静静的做自己喜欢的事……
目录
一,场景介绍
二,接口说明
三,http请求使用
一,场景介绍
应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
二,接口说明
HTTP数据请求功能主要由http模块提供。
使用该功能需要申请ohos.permission.INTERNET权限。
接口名 | 描述 |
---|---|
createHttp() | 创建一个http请求。 |
request() | 根据URL地址,发起HTTP网络请求。 |
requestInStream()10+ | 根据URL地址,发起HTTP网络请求并返回流式响应 |
destroy() | 中断请求任务。 |
on(type: ‘headersReceive’) | 订阅HTTP Response Header 事件。 |
off(type: ‘headersReceive’) | 取消订阅HTTP Response Header 事件。 |
once(‘headersReceive’)8+ | 订阅HTTP Response Header 事件,但是只触发一次。 |
on(‘dataReceive’)10+ | 订阅HTTP流式响应数据接收事件。 |
off(‘dataReceive’)10+ | 取消订阅HTTP流式响应数据接收事件。 |
on(‘dataEnd’)10+ | 订阅HTTP流式响应数据接收完毕事件。 |
off(‘dataEnd’)10+ | 取消订阅HTTP流式响应数据接收完毕事件。 |
on(‘dataReceiveProgress’)10+ | 订阅HTTP流式响应数据接收进度事件。 |
off(‘dataReceiveProgress’)10+ | 取消订阅HTTP流式响应数据接收进度事件。 |
三,http请求使用
使用步骤为:
- 从@ohos.net.http.d.ts中导入http命名空间。
- 调用createHttp()方法,创建一个HttpRequest对象。
- 调用该对象的on()方法,可以根据业务需要订阅HTTP响应头事件、HTTP流式响应数据接收事件、HTTP流式响应数据接收进度事件和HTTP流式响应数据接收完毕事件。
- 调用该对象的requestInStream()方法,传入http请求的url地址和可选参数,发起网络请求。
- 按照实际业务需要,可以解析返回的响应码。
- 调用该对象的off()方法,取消订阅相应事件。
- 当该请求使用完毕时,调用destroy()方法主动销毁。
简单的演示(只是简单演示,不作为项目使用)
//1.从@ohos.net.http.d.ts中导入http命名空间。
import http from '@ohos.net.http';export default class HttpClient {private request :http.HttpRequest | null = null;/*** 2.创建HttpRequest* */createRequest(){this.request =http.createHttp()}/** 3.用于订阅HTTP响应头,此接口会比request请求先返回。* */registerOn(){this.request.on("headersReceive",(event)=>{console.info("headersReceive--->",event)})}/*** 4,调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求* */requestMethod(url:string,options: http.HttpRequestOptions){this.request.request(url,options,(err,data)=>{//5.解析请求结果if(err){//请求失败}else {//请求成功//返回码data.responseCode//返回结果data.result// 6.取消订阅HTTP响应头事件this.request.off('headersReceive');// 7.当该请求使用完毕时,调用destroy方法主动销毁this.request.destroy();}})}/***** 创建请求Options* */createRequestOptions():http.HttpRequestOptions{let options:http.HttpRequestOptions={}//请求方式options.method=http.RequestMethod.GET// 当使用POST请求时此字段用于传递内容options.extraData="extraData"// 可选,指定返回数据的类型options.expectDataType=http.HttpDataType.STRING// 可选,默认为trueoptions.usingCache=true// 可选,默认为1options.priority=1//开发者根据自身业务需要添加header字段options.header=[{'Content-Type': 'application/json'}]// 可选,默认为60000msoptions.readTimeout=60000// 可选,默认为60000msoptions.connectTimeout=60000// 可选,协议类型默认值由系统自动指定options.usingProtocol=http.HttpProtocol.HTTP1_1return options}}
调用者:
import HttpClient from './HttpTest'export default class HttpUse{private request:HttpClient | null = nullrequestUrl(){this.request = new HttpClient()this.request.createRequest()this.request.registerOn()this.request.requestMethod('https://www.baidu.com',this.request.createRequestOptions())}
}
注意:
1,需要添加网络权限
2,使用时尽量
①在work使用
②taskpool使用
③使用promise异步
防止阻塞主线程