HarmonyOS 鸿蒙Next post请求,通过extraData中写入参数请求不到数据的问题

HarmonyOS 鸿蒙Next post请求,通过extraData中写入参数请求不到数据的问题 为什么请求不到数据呢?postman中如果是json传进的是请求不到数据,表单形式就可以请求到;

其次,在header中设置为表单方式,也一样请求不到数据?求解答!

cke_251.png


更多关于HarmonyOS 鸿蒙Next post请求,通过extraData中写入参数请求不到数据的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

18 回复

let data = { “currentPage” : 1, “pageSize” : 10}


json 参数我也是这样传的

```bash
Content-Type  application/json设置了吗

更多关于HarmonyOS 鸿蒙Next post请求,通过extraData中写入参数请求不到数据的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我知道了, 我的这个post请求需要表单的形式来请求, json是请求不到数据的, 表单需要怎么请求呀, `objectToQueryString`这个方法爆红,

const objectToQueryString = (params: object) => { let result = “” for (let key in params) { const value = params[key] result += ${key}=${value}& } result = result.slice(0, -1) return result },

感谢感谢,成啦!!! 谢谢,

一模一样的问题

这问题还没得到解决,我先跳过了,

我用的api9,也是这个问题,在模拟器上post请求根本就跑不动,参数就传不过去,使用axios三方库也一样不行,不知道是不是模拟器的问题。

传参格式问题,比如你原有接口入参请求格式是body={name:’’,password:’’}这样的json格式的话,调用鸿蒙的httpRequest传参extraData:{name:’’,password:’’},接口拿到的就是data= {“userName”:“admind”,“password”:“By123456”} 格式完全乱了,接口取不到正确的字段,全部的传参都被压缩成了一整个字符串,而这个字符串的值是空,把整个传参变成了键名,而键值为空,尝试了好几种办法…好难受,在gitee上有人封装了axios,可以去参考看看。

一模一样,都是null

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

最近没看post请求,不知道有没有什么解决办法,暂时我还没发现怎么回事,

是只有模拟器有这个问题,还是真机也有这个问题呀

模拟器和真机都试过,都有这个问题,

目前这块功能在完善中,已经在规划中了。

这个问题目前解决了么。

我post请求用json和表单都可以请求到数据

// extraData: objectToQueryString(data),//表单参数
extraData: data,//json参数

我是这么传进去的, 请求不到数据

extraData:

  • key: 397c9db4cb0621ad0313123dab416668
  • city: 北京

在HarmonyOS鸿蒙Next中,如果通过extraData写入参数的POST请求无法获取数据,可能的原因包括:

  1. 参数格式问题:extraData中的参数格式可能不符合服务器要求,确保参数以正确的JSON格式传递。
  2. 请求头设置问题:检查请求头是否正确设置,特别是Content-Type,通常应为application/json
  3. 网络权限问题:确保应用已获取网络访问权限,可在config.json中配置ohos.permission.INTERNET
  4. URL或路径问题:确认请求的URL和路径正确无误。
  5. 服务器端问题:服务器可能未正确处理请求,检查服务器日志以排查问题。
  6. 异步处理问题:确保在异步请求中正确处理回调函数,以获取服务器返回的数据。

示例代码:

import http from '[@ohos](/user/ohos).net.http';

let httpRequest = http.createHttp();
let url = 'https://example.com/api';
let extraData = {
  key1: 'value1',
  key2: 'value2'
};

httpRequest.request(url, {
  method: http.RequestMethod.POST,
  header: {
    'Content-Type': 'application/json'
  },
  extraData: JSON.stringify(extraData)
}, (err, data) => {
  if (err) {
    console.error(`Request failed, code is ${err.code}, message is ${err.message}`);
  } else {
    console.info('Response data: ' + data.result);
  }
});
``

确保参数格式、请求头、网络权限、URL路径、服务器处理及异步回调均正确设置。
回到顶部