HarmonyOS NEXT鸿蒙开发:网络请求-Remote Communication Kit(远场通信服务)发送POST请求

注意:网络请求在 previewer预览 中 不可用,要在 模拟器 或 真机设备 使用

POST请求介绍

HTTP 中的 POST 请求是另一种常用的请求方法,主要用于 向服务器 提交 数据,如:表单提交(注册、登录、提交个人信息)、创建资源、发送复杂数据

特点

  1. 数据传递方式:数据放在请求体(Body)中传递,不会显示在 URL 里,格式更灵活(可支持 JSON、表单、文件等)。
  2. 数据长度限制:理论上没有严格的数据大小限制(实际受服务器配置影响),适合传递大量或复杂数据。
  3. 安全性:数据不在 URL 中暴露,相对 GET 更安全(但仍需通过 HTTPS 加密来保障传输安全)。

适用场景:

  • 用户登录、注册(提交账号密码)
  • 提交表单数据(如发布文章、填写问卷)
  • 上传文件、图片等二进制数据
  • 调用创建/修改类 API(如新增用户、更新信息)

发送 POST 请求

官方网址

定义

post(url: URLOrString, content?: RequestContent, destination?: ResponseBodyDestination): Promise<Response>

参数:

  • url:URLOrString 类型,必填,URL网址

  • content:RequestContent 类型,非必填,请求的正文部分的内容。默认为undefined。

  • destination:ResponseBodyDestination,非必填,HTTP响应的目标位置或目的地。

例子

创建测试 api

在 https://mock.presstime.cn/ 创建工程、url,定义返回数据:

{
  "code": 0,
  "msg": "登录成功"
}

代码

import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit';

const session = rcp.createSession();

const URL_LOGIN = "https://mock.presstime.cn/mock/68e0fb395247e4d10b5f7811/hongmeng_app/login"
// const URL_LOGIN = "http://127.0.0.1:4523/m1/3733307-0-default/login"

const data: rcp.FormFields = {
  "username": "admin",
  "password": "123",
};

session.post(URL_LOGIN).then((response) => {
  console.info("login请求--","请求成功,返回:",JSON.stringify(response));
  console.info("login请求--",`状态码:`,response.statusCode);
  const resp = response.toJSON()
  if(resp) {
    console.info("login请求--","code:", resp["code"]);
  }
}).catch((err: BusinessError) => {
  console.error("login请求--",`请求失败,错误码: ${err.code}, 错误消息: ${JSON.stringify(err)}`);
});

查看结果


原文出处:/show_1GW1yttmxyoo.html