不得不承认,年龄越大性格就越简单,更喜欢安静,不喜欢去了解别人,也不想被了解,只想静静的做自己喜欢的事……
目录
一,场景介绍
二,接口说明
三,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
// 可选,默认为true
options.usingCache=true
// 可选,默认为1
options.priority=1
//开发者根据自身业务需要添加header字段
options.header=[{
'Content-Type': 'application/json'
}]
// 可选,默认为60000ms
options.readTimeout=60000
// 可选,默认为60000ms
options.connectTimeout=60000
// 可选,协议类型默认值由系统自动指定
options.usingProtocol=http.HttpProtocol.HTTP1_1
return options
}
}
调用者:
import HttpClient from './HttpTest'
export default class HttpUse{
private request:HttpClient | null = null
requestUrl(){
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异步
防止阻塞主线程
参考链接
发表评论