HarmonyOS 鸿蒙Next中rcp Post请求怎么传请求参数

HarmonyOS 鸿蒙Next中rcp Post请求怎么传请求参数啊?

5 回复

// 定义URL此处给出示例,请根据实际情况选择正确地址 const postURL = “” // 定义content,请根据实际情况选择 const postContent: rcp.RequestContent = { fields: { ‘key1’: ‘value1’, ‘key2’: ‘value2’, ‘key3’: ‘value3’ } } // 创建session const session = rcp.createSession(); // 使用post发起请求,使用Promise进行异步回调;其中content以及destination为可选参数,可根据实际情况选择 session.post(postURL, postContent) .then((response) => { console.info(Response succeeded: ${JSON.stringify(response.headers)}); console.info(Response succeeded: ${JSON.stringify(response.statusCode)}); console.info(Response succeeded: ${JSON.stringify(postContent)}); }) .catch((err: BusinessError) => { console.error(Response err: Code is ${JSON.stringify(err.code)}, message is ${JSON.stringify(err)}); })

更多关于HarmonyOS 鸿蒙Next中rcp Post请求怎么传请求参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


提示我 params body 错误 为啥啊,

这个得看你们服务器,需要什么类型的数据,看看文档。

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp#section18971142565016

如果接收的是普通表单:

const postContent = new rcp.Form({
      'key1': 'value1',
      'key2': 'value2',
      'key3': 'value3'
})

在HarmonyOS Next中使用rcp进行POST请求传参:

  1. 使用@ohos.net.http模块创建HttpRequest对象
  2. 通过setHeader()设置Content-Type为application/json
  3. 请求参数放在extraData中作为请求体发送:

示例代码:

let httpRequest = http.createHttp();
httpRequest.request(
  "https://example.com/api",
  {
    method: http.RequestMethod.POST,
    header: { 'Content-Type': 'application/json' },
    extraData: JSON.stringify({key1: 'value1', key2: 'value2'})
  },
  (err, data) => { /* 回调处理 */ }
);

参数需要转换为JSON字符串格式。

在HarmonyOS Next中,使用RPC进行POST请求传参可以通过以下方式实现:

  1. 使用@Param注解传递参数:
import rpc from '@ohos.rpc';

async function postRequest() {
  let option = {
    method: 'POST',
    extraData: {
      key1: 'value1',
      key2: 'value2'
    }
  };
  
  let proxy = rpc.createRemoteProxy('your_service_id');
  let result = await proxy.call('your_method_name', option);
}
  1. 直接在请求体中传递JSON参数:
import http from '@ohos.net.http';

let httpRequest = http.createHttp();
let url = 'https://example.com/api';
let params = {
  param1: 'value1',
  param2: 'value2'
};

httpRequest.request(
  url,
  {
    method: 'POST',
    header: {
      'Content-Type': 'application/json'
    },
    extraData: JSON.stringify(params)
  },
  (err, data) => {
    // 处理响应
  }
);
  1. 使用FormData形式传参:
let formData = new FormData();
formData.append('username', 'user1');
formData.append('password', '123456');

httpRequest.request(
  url,
  {
    method: 'POST',
    extraData: formData
  },
  // 回调处理
);

注意根据实际接口要求设置正确的Content-Type请求头,JSON数据通常使用’application/json’,表单数据使用’application/x-www-form-urlencoded’。

回到顶部