HarmonyOS:使用HTTP访问网络

HTTP

一、导入http模块

module.json5里添加网络权限

导入http模块

二、创建http请求

创建http请求

bash 复制代码
import { http } from '@kit.NetworkKit'


function getNetData() {
  // 创建数据请求对象
  let httpRequest = http.createHttp()
}

三、发起请求


请求方法

四、请求示例

GET请求

POST请求

五、处理响应


ResponseCode状态码

六、销毁http

七、 获取鸿蒙专栏网络数据

效果图

testHttp01.ets代码

bash 复制代码
import { http } from '@kit.NetworkKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { JSON } from '@kit.ArkTS';

/**
 * 获取 鸿蒙专栏
 * @returns
 */
function getHarmonySpecialColumn(): string {
  let jsonData = ""
  // 创建数据请求对象
  // 每一个httpRequest对应一个HTTP请求任务,不可复用
  let httpRequest = http.createHttp()

  // 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
  // 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
  httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
  });

  // 开发API https://www.wanandroid.com/blog/show/2
  let baseUrl = "https://www.wanandroid.com/"
  //鸿蒙专栏
  const harmonyJson = "harmony/index/json"

  httpRequest.request(`${baseUrl}${harmonyJson}`, {
    method: http.RequestMethod.GET,
    header: {
      'Content-Type': 'application/json'
    },
    connectTimeout: 60000, // 可选,默认为60000ms
    readTimeout: 60000, // 可选,默认为60000ms
  }, (err: BusinessError, data: http.HttpResponse) => {
    if (err) {
      console.error('error:' + JSON.stringify(err));
      httpRequest.destroy()
    } else {
      jsonData = JSON.stringify(data.result)
      // data.result为HTTP响应内容,可根据业务需要进行解析
      console.info('Result jsonData :' + jsonData);
      console.info('code:' + JSON.stringify(data.responseCode));
      // data.header为HTTP响应头,可根据业务需要进行解析
      console.info('header:' + JSON.stringify(data.header));
      console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
      // 当该请求使用完毕时,调用destroy方法主动销毁
      httpRequest.destroy();
    }
  })

  return jsonData
}

@Entry
@Component
struct TestHttp01 {
  @State message: string = '鸿蒙专栏';

  build() {
    Column() {
      Button("获取鸿蒙专栏")
        .fontColor(Color.Black)
        .fontSize(20)
        .margin({ top: 20 })
        .fontWeight(FontWeight.Medium)
        .onClick((event) => {
          getHarmonySpecialColumn()
        })

    }
    .height('100%')
    .width('100%')
  }
}
相关推荐
Sylvia-girl5 小时前
Java——抽象类
java·开发语言
Yana.nice7 小时前
Bash函数详解
开发语言·chrome·bash
Georgewu8 小时前
【HarmonyOS】元服务入门详解 (一)
harmonyos
coder_pig9 小时前
跟🤡杰哥一起学Flutter (三十五、玩转Flutter滑动机制📱)
android·flutter·harmonyos
tomorrow.hello9 小时前
Java并发测试工具
java·开发语言·测试工具
晓13139 小时前
JavaScript加强篇——第四章 日期对象与DOM节点(基础)
开发语言·前端·javascript
老胖闲聊9 小时前
Python I/O 库【输入输出】全面详解
开发语言·python
她说人狗殊途11 小时前
java.net.InetAddress
java·开发语言
天使day11 小时前
Cursor的使用
java·开发语言·ai
yqcoder11 小时前
7. TCP 和 UDP 的区别
网络·网络协议·http