鸿蒙Next中如何使用fetch进行网络请求

在鸿蒙Next开发中,我想使用fetch API进行网络请求,但不太清楚具体该如何实现。能否提供一段示例代码,展示如何发送GET/POST请求并处理响应?需要特别注意哪些鸿蒙特有的配置或权限声明?

2 回复

鸿蒙Next里用fetch?简单!先import,然后直接fetch(url),接着.then处理响应,.catch抓错误。记得用await更优雅,但别在UI线程阻塞哦~代码三行搞定,网络请求so easy!

更多关于鸿蒙Next中如何使用fetch进行网络请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,你可以使用@ohos.net.http模块中的http类进行网络请求,类似于Web中的fetch。以下是详细步骤和代码示例:

步骤1:导入模块

在代码文件中导入http模块:

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

步骤2:创建HTTP请求对象

使用createHttp()方法创建一个HTTP请求对象:

let httpRequest = http.createHttp();

步骤3:发送GET请求示例

使用request()方法发送请求,并处理响应:

// 定义请求URL
let url = 'https://api.example.com/data';

// 发送GET请求
httpRequest.request(
  url,
  {
    method: http.RequestMethod.GET, // 请求方法
    header: { 'Content-Type': 'application/json' } // 请求头
  },
  (err, data) => {
    if (err) {
      console.error('请求失败:', err.code, err.message);
      return;
    }
    // 解析响应数据
    console.log('响应状态码:', data.responseCode);
    console.log('响应结果:', data.result.toString());
  }
);

步骤4:发送POST请求示例

对于POST请求,需在extraData中传递请求体:

let postUrl = 'https://api.example.com/submit';
httpRequest.request(
  postUrl,
  {
    method: http.RequestMethod.POST,
    header: { 'Content-Type': 'application/json' },
    extraData: JSON.stringify({ key: 'value' }) // 请求体数据
  },
  (err, data) => {
    if (err) {
      console.error('POST请求失败:', err.message);
      return;
    }
    console.log('POST响应:', data.result.toString());
  }
);

注意事项:

  1. 权限配置:在module.json5文件中添加网络权限:
    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.INTERNET"
          }
        ]
      }
    }
    
  2. 错误处理:检查err对象,处理网络异常或服务器错误。
  3. 异步操作request()是异步方法,避免在回调外直接使用响应数据。
  4. 释放资源:在页面销毁时调用httpRequest.destroy()释放请求对象。

替代方案(如适用):

  • 若开发Web类应用,可使用@ohos.net.webSocketXMLHttpRequest
  • 对于更复杂的需求(如文件上传),参考@ohos.request上传下载API。

以上代码展示了鸿蒙Next中实现网络请求的基本方法,可根据实际需求调整参数和逻辑。

回到顶部