赞
踩
使用Arkts功能需要申请ohos.permission.INTERNET权限。即在module.json5文件中申明网络访问权限:ohos.permission.INTERNET。如下
- {
- "module" : {
- "requestPermissions":[
- {
- "name": "ohos.permission.INTERNET"
- }
- ]
- }
- }
Arkts http数据请求功能主要由http模块提供。具体接口说明如下表。
接口名 | 功能描述 |
createHttp() | 创建一个http请求。 |
request() | 根据URL地址,发起HTTP网络请求。 |
destroy() | 中断请求任务。 |
on(type: 'headersReceive') | 订阅HTTP Response Header 事件。 |
off(type: 'headersReceive') | 取消订阅HTTP Response Header 事件。 |
import http from '@ohos.net.http';
- // 每一个httpRequest对应一个http请求任务,不可复用
- let httpRequest = http.createHttp();
(可选)订阅HTTP响应头。
根据URL地址,发起HTTP网络请求。
(可选)处理HTTP响应头和HTTP网络请求的返回结果。
- httpRequest.request('接口地址',{
- method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
- // 开发者根据自身业务需要添加header字段
- header: {
- 'Content-Type': 'application/json'
- },
- // 当使用POST请求时此字段用于传递内容
- extraData: {
- "data": "data to send",
- },
- connectTimeout: 60000, // 可选,默认为60s
- readTimeout: 60000, // 可选,默认为60s
- }, (err,data) => {
- if (!err) {
- // data.result为http响应内容,可根据业务需要进行解析
- console.info('Result:' + data.result);
- console.info('code:' + data.responseCode);
- // data.header为http响应头,可根据业务需要进行解析
- console.info('header:' + JSON.stringify(data.header));
- console.info('cookies:' + data.cookies); // 8+
- } else {
- console.info('error:' + JSON.stringify(err));
- // 该请求不再使用,调用destroy方法主动销毁。
- httpRequest.destroy();
- }
- })
案例:获取诗词接公开API接口
- /*
- * 发起http请求
- * */
- // 1:导入http模块
- import http from '@ohos.net.http'
- @Entry
- @Component
- struct HttpReq {
- @State poem: string = '把酒祝东风'
- @State from:string = '柳宗元'
-
- aboutToAppear(){
- setInterval(() => {
- // 2. 常见http请求对象
- let httpReq = http.createHttp()
- // 3. 发起请求
- httpReq.request('https://api.apiopen.top/api/sentences',
- {
- method:http.RequestMethod.GET,
- },
- (err,data) => {
- // 4. 处理结果
- if (!err) {
- this.poem = JSON.parse(`${data.result}`).result.name
- this.from = JSON.parse(`${data.result}`).result.from
- }
- }
- )
- },2000)
- }
- build() {
- Row() {
- Column() {
- Text(this.poem)
- .fontSize(20)
- .fontWeight(FontWeight.Bold)
- Text(this.from)
- .fontSize(20)
- .fontWeight(FontWeight.Bold)
- }
- .width('100%')
- }
- .height('100%')
- }
- }
避免地狱回调
- import http from '@ohos.net.http'
- @Entry
- @Component
- struct Index {
- @State info:string = "hello Word !"
- aboutToAppear(){
- let httpReq = http.createHttp()
- // httpReq.request返回的是promise,直接可以链式调用
- let promise = httpReq.request('')
- promise.then((data) =>{
- //可以使用返回值作为参数继续其它请求
- this.info = JSON.parse(`${data.result}`).result.name
- }).catch ((err) =>{
- console.error(err)
- })
- }
- build() {
- Row() {
- Column() {
-
- }
- .width('100%')
- }
- .height('100%')
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。