当前位置:   article > 正文

Arkts http数据请求_arkts 数据请求

arkts 数据请求

使用Arkts功能需要申请ohos.permission.INTERNET权限。即在module.json5文件中申明网络访问权限:ohos.permission.INTERNET。如下

  1. {
  2. "module" : {
  3. "requestPermissions":[
  4. {
  5. "name": "ohos.permission.INTERNET"
  6. }
  7. ]
  8. }
  9. }

Arkts http数据请求功能主要由http模块提供。具体接口说明如下表。

接口名

功能描述

createHttp()

创建一个http请求

request()

根据URL地址,发起HTTP网络请求

destroy()

中断请求任务。

on(type: 'headersReceive')

订阅HTTP Response Header 事件。

off(type: 'headersReceive')

取消订阅HTTP Response Header 事件。

  •  首先需要引入http模块
import http from '@ohos.net.http';
  • 创建一个HTTP请求,返回一个HttpRequest对象
  1. // 每一个httpRequest对应一个http请求任务,不可复用
  2. let httpRequest = http.createHttp();
  • (可选)订阅HTTP响应头。

  • 根据URL地址,发起HTTP网络请求。

  • (可选)处理HTTP响应头和HTTP网络请求的返回结果。

  1. httpRequest.request('接口地址',{
  2. method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
  3. // 开发者根据自身业务需要添加header字段
  4. header: {
  5. 'Content-Type': 'application/json'
  6. },
  7. // 当使用POST请求时此字段用于传递内容
  8. extraData: {
  9. "data": "data to send",
  10. },
  11. connectTimeout: 60000, // 可选,默认为60s
  12. readTimeout: 60000, // 可选,默认为60s
  13. }, (err,data) => {
  14. if (!err) {
  15. // data.result为http响应内容,可根据业务需要进行解析
  16. console.info('Result:' + data.result);
  17. console.info('code:' + data.responseCode);
  18. // data.header为http响应头,可根据业务需要进行解析
  19. console.info('header:' + JSON.stringify(data.header));
  20. console.info('cookies:' + data.cookies); // 8+
  21. } else {
  22. console.info('error:' + JSON.stringify(err));
  23. // 该请求不再使用,调用destroy方法主动销毁。
  24. httpRequest.destroy();
  25. }
  26. })

案例:获取诗词接公开API接口

  1. /*
  2. * 发起http请求
  3. * */
  4. // 1:导入http模块
  5. import http from '@ohos.net.http'
  6. @Entry
  7. @Component
  8. struct HttpReq {
  9. @State poem: string = '把酒祝东风'
  10. @State from:string = '柳宗元'
  11. aboutToAppear(){
  12. setInterval(() => {
  13. // 2. 常见http请求对象
  14. let httpReq = http.createHttp()
  15. // 3. 发起请求
  16. httpReq.request('https://api.apiopen.top/api/sentences',
  17. {
  18. method:http.RequestMethod.GET,
  19. },
  20. (err,data) => {
  21. // 4. 处理结果
  22. if (!err) {
  23. this.poem = JSON.parse(`${data.result}`).result.name
  24. this.from = JSON.parse(`${data.result}`).result.from
  25. }
  26. }
  27. )
  28. },2000)
  29. }
  30. build() {
  31. Row() {
  32. Column() {
  33. Text(this.poem)
  34. .fontSize(20)
  35. .fontWeight(FontWeight.Bold)
  36. Text(this.from)
  37. .fontSize(20)
  38. .fontWeight(FontWeight.Bold)
  39. }
  40. .width('100%')
  41. }
  42. .height('100%')
  43. }
  44. }

避免地狱回调

 

  1. import http from '@ohos.net.http'
  2. @Entry
  3. @Component
  4. struct Index {
  5. @State info:string = "hello Word !"
  6. aboutToAppear(){
  7. let httpReq = http.createHttp()
  8. // httpReq.request返回的是promise,直接可以链式调用
  9. let promise = httpReq.request('')
  10. promise.then((data) =>{
  11. //可以使用返回值作为参数继续其它请求
  12. this.info = JSON.parse(`${data.result}`).result.name
  13. }).catch ((err) =>{
  14. console.error(err)
  15. })
  16. }
  17. build() {
  18. Row() {
  19. Column() {
  20. }
  21. .width('100%')
  22. }
  23. .height('100%')
  24. }
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/92120
推荐阅读
相关标签
  

闽ICP备14008679号