HarmonyOS 鸿蒙Next httpRequest如何配置extraData以传递json字符串给后端

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next httpRequest如何配置extraData以传递json字符串给后端

httpPostUrl,
{
method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
// 开发者根据自身业务需要添加header字段
header: {
‘Content-Type’: ‘application/json’
},
// 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定
extraData: params,
expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
usingCache: true, // 可选,默认为true
priority: 1, // 可选,默认为1
connectTimeout: 60000, // 可选,默认为60000ms
readTimeout: 60000, // 可选,默认为60000ms

我现在这个extraData 如果传递aa=‘xx’&&bb='xx’我的后端是可以接受到的。

但是我如果想传递json后端获取不到了 json我测试过了没有问题。 是改哪里啊?

2 回复

可以参考如下示例代码,我试了服务端是能正常接收到JSON数据的,如果还有问题建议可以先在端侧发送前打印或抓包下数据,确认已把extraData加到body体里,然后跟服务端一起调试下

  let request = http.createHttp();
  let myJson = '{"name": "John", "age": 30, "city": "testName"}';
  let obj: ESObject = JSON.parse(myJson);
  request.request("xxxx",
	{
	  method: http.RequestMethod.POST,
	  header: {
		'Content-Type': 'application/json'
	  },
	  extraData: myJson,
	  expectDataType: http.HttpDataType.STRING,
	  usingCache: true, // 可选,默认为true
	  priority: 1, // 可选,默认为1
	  connectTimeout: 60000, // 可选,默认为60000ms
	  readTimeout: 60000, // 可选,默认为60000ms
	},
	(err, data) => {
	  console.info(tag, "request err = " + JSON.stringify(err) + ", data = " + JSON.stringify(data));
	});
})

在HarmonyOS鸿蒙系统中,通过httpRequest配置extraData以传递JSON字符串给后端,可以通过以下步骤实现:

  1. 构建JSON字符串:首先,使用Java的JSONObject或Kotlin的JsonObject等类来构建你的JSON数据。确保数据格式正确,以便后端能够解析。

  2. 设置extraData:在httpRequest的配置中,extraData通常用于传递附加信息,如请求头、认证信息等。然而,标准API中extraData并不直接支持传递JSON字符串作为请求体。若需传递JSON数据,应使用body字段。

  3. 使用body字段:将构建的JSON字符串作为请求体内容,通过HttpRequest对象的body属性进行设置。确保设置正确的Content-Type,如application/json,以便后端正确解析。

  4. 发送请求:配置完成后,调用send方法发送请求。

示例代码(Kotlin):

val json = JsonObject().apply {
    addProperty("key", "value")
}
val request = HttpRequest.Builder()
    .url("http://your-backend-url")
    .header("Content-Type", "application/json")
    .body(json.toString().toByteArray())
    .build()
// 发送请求

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部