HarmonyOS应用如何访问和使用网络资源?

HarmonyOS应用如何访问和使用网络资源?

阅读 767
avatarAI BotBETA

HarmonyOS应用访问和使用网络资源的方式主要依赖于HTTP数据请求功能,该功能主要由http模块提供。以下是具体步骤:

1. 申请网络访问权限

在进行网络请求前,需要在module.json5文件中声明网络访问权限,添加如下代码:

"module": {
  "requestPermissions": [
    {
      "name": "ohos.permission.INTERNET"
    }
  ]
}

2. 导入http模块

在需要使用网络请求的Ability或模块中,导入http模块:

import http from '@ohos.net.http';

3. 创建httpRequest对象

使用createHttp()方法创建一个httpRequest对象,该对象包含了常用的网络请求方法,如requestdestroyon('headerReceive')等:

let httpRequest = http.createHttp();

需要注意的是,每一个httpRequest对象对应一个http请求任务,不可复用。

4. 发起HTTP请求

http模块支持常用的GET、POST等方法,封装在RequestMethod中。调用request方法发起网络请求,需要传入两个参数:请求的url地址和可选参数(类型为HttpRequestOptions,用于定义请求方式、连接超时时间、请求头字段等)。

  • GET请求:参数内容需要拼接到URL中进行发送。
let url = "https://EXAMPLE_URL?param1=v1&param2=v2";
let promise = httpRequest.request(
  url, 
  {
    method: http.RequestMethod.GET,
    connectTimeout: 60000,
    readTimeout: 60000,
    header: {
      'Content-Type': 'application/json'
    }
  }
);
  • POST请求:参数需要添加到extraData里面。
let url = "https://EXAMPLE_URL";
let promise = httpRequest.request(
  url, 
  {
    method: http.RequestMethod.POST,
    extraData: {
      "param1": "value1",
      "param2": "value2"
    },
    connectTimeout: 60000,
    readTimeout: 60000,
    header: {
      'Content-Type': 'application/json'
    }
  }
);

5. 处理响应结果

使用.then().catch()方法处理响应结果和异常:

promise.then((data) => {
  if (data.responseCode === http.ResponseCode.OK) {
    console.info('Result:' + data.result);
    console.info('code:' + data.responseCode);
  }
}).catch((err) => {
  console.info('error:' + JSON.stringify(err));
});

其中,data.responseCode为HTTP请求返回的状态码,如果状态码为http.ResponseCode.OK(即200),则表示请求成功。data.result为服务器返回的业务数据,开发者可以根据自身业务场景解析此数据。

6. (可选)订阅请求头

可以使用.on('headersReceive')方法订阅HTTP响应头,该方法会在请求头接收完毕后触发,返回响应头信息。

httpRequest.on('headersReceive', (header) => {
  console.info('header: ' + JSON.stringify(header));
});

通过以上步骤,HarmonyOS应用就可以成功访问和使用网络资源了。

1 个回答

推荐参阅(网络服务)主要提供以下功能:
HTTP数据请求:通过HTTP发起一个数据请求。
WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。
Socket连接:通过Socket进行数据传输。
网络连接管理:网络连接管理提供管理网络一些基础能力,包括WiFi/蜂窝/Ethernet等多网络连接优先级管理、网络质量评估、订阅默认/指定网络连接状态变化、查询网络连接信息、DNS解析等功能。
MDNS管理:MDNS即多播DNS(Multicast DNS),提供局域网内的本地服务添加、移除、发现、解析等能力。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题