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%')
  }
}
相关推荐
C++ 老炮儿的技术栈5 小时前
UDP 与 TCP 的区别是什么?
开发语言·c++·windows·算法·visual studio
wgslucky5 小时前
Dubbo报错:module java.base does not “opens java.lang“ to unnamed module
java·开发语言·dubbo
whyeekkk5 小时前
python打卡第48天
开发语言·python
Georgewu6 小时前
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
harmonyos
DougLiang7 小时前
关于easyexcel动态下拉选问题处理
java·开发语言
全职计算机毕业设计7 小时前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
5:008 小时前
云备份项目
linux·开发语言·c++
笨笨马甲8 小时前
Qt Quick模块功能及架构
开发语言·qt
萌虎不虎8 小时前
【鸿蒙在 ETS (Extendable TypeScript) 中创建多级目录或文件,可以使用鸿蒙的文件系统 API】
鸿蒙
颜颜yan_8 小时前
【HarmonyOS5】UIAbility组件生命周期详解:从创建到销毁的全景解析
架构·harmonyos·鸿蒙·鸿蒙系统