鸿蒙Next开发中如何使用axios发送formdata请求

在鸿蒙Next开发中,我想使用axios发送formdata格式的请求,但不知道具体该如何实现。比如如何正确构建formdata数据,设置请求头,以及处理可能的错误。能否提供一个完整的代码示例?

2 回复

鸿蒙Next里用axios发formdata?简单!先new FormData(),往里塞数据,然后直接axios.post(url, formData)。记得设置headers: {'Content-Type': 'multipart/form-data'},不然服务器可能认不出你的爱心数据包~

更多关于鸿蒙Next开发中如何使用axios发送formdata请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)开发中,可以使用@ohos/net.http模块发送FormData请求。以下是具体实现步骤:

1. 添加网络权限

module.json5文件中添加网络权限:

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

2. 核心代码实现

import http from '@ohos.net.http';
import fileIo from '@ohos.file.fs';

// 创建FormData数据
async function createFormData(): Promise<http.FormData> {
  let formData = new http.FormData();
  
  // 添加文本字段
  formData.append('username', '张三');
  formData.append('age', '25');
  
  // 添加文件(示例)
  try {
    let filePath = 'xxx'; // 替换为实际文件路径
    let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_ONLY);
    let fileStat = fileIo.statSync(filePath);
    formData.append('avatar', file, 'avatar.jpg', fileStat.size);
  } catch (err) {
    console.error('文件添加失败:', err);
  }
  
  return formData;
}

// 发送FormData请求
async function sendFormDataRequest() {
  let httpRequest = http.createHttp();
  let formData = await createFormData();

  try {
    let response = await httpRequest.request(
      'https://example.com/upload',
      {
        method: http.RequestMethod.POST,
        header: {
          'Content-Type': 'multipart/form-data'
        },
        extraData: formData
      }
    );
    
    console.log('响应状态码:', response.responseCode);
    console.log('响应数据:', response.result.toString());
  } catch (err) {
    console.error('请求失败:', err);
  } finally {
    httpRequest.destroy();
  }
}

关键说明:

  1. FormData构建:使用http.FormData类,通过append()方法添加文本和文件字段
  2. 文件处理:需要先通过fileIo模块打开文件,获取文件句柄和大小
  3. 请求配置
    • 方法必须为POST
    • Content-Type设为multipart/form-data
    • FormData对象通过extraData传递

注意事项:

  • 确保文件路径正确且应用有访问权限
  • 实际使用时需要处理网络异常和文件操作异常
  • 生产环境建议使用HTTPS协议

这种方式可以替代传统Web开发中的axios库,是鸿蒙原生开发的推荐方案。

回到顶部