HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据
HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据
这是我定义的map数据。
let tokenJson = new Map<string,string>();
let token = BDUserManager.share().token;
if (token) {
tokenJson["uid"] = token.uid ?? "";
tokenJson["openid"] = token.openid ?? "";
tokenJson["loginid"] = token.loginid ?? "";
}
通过以上方式添加数据后,tokenJson的size一直为0.但是呢通过在JSON.stringify(tokenJson) 转换后,能正常转化成json字符串
然后我接着试第二种方式:
tokenJson.set("uid", token.uid ?? "");
tokenJson.set("openid", token.openid ?? "");
tokenJson.set("loginid", token.loginid ?? "");
这样打印出来的tokenJson的size为3。然后通过JSON.stringify(tokenJson) 后不成功,结果为{}.
另外还有个问题:
new Map<string,Object>(); 和 new Map<string,object>();
这两个定义中的object有啥区别啊。
我想请教一下:你们是如何封装请求参数的呢
ArkTS中的Map类型其实就是ES6里面的Map。
而Map 是 ES6 中引入的一种新的数据结构,Map ≠ Object。
因此tokenJson["uid"] = token.uid ?? ""
≠ tokenJson.set("uid", token.uid ?? "")
;
当你通过tokenJson["uid"] = token.uid ?? "";
时,是给tokenJson
这个实例对象上附加了一个属性。并没有设置到tokenJson
的entries
属性中,tokenJson.size
只统计tokenJson.entries
中的key的数量。
更多关于HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
还有一点想再请教下。那个http
传参字段extraData
应该怎么传入呢。我肯定是在工具类中封装好参数再传入,昨天捣鼓了半天,通过map.set
方式不知道怎么传。望大佬指点一二,
我刚接触,但这个if()的条件是什么?是否会执行下面的语句啊?
第二个问题,那个"Object"和"object"不一样,前面那个需要自定义,后面那个是系统内置,
这是只是个例子,就是有添加数据,
你的if都没成立,怎么执行?可以抛弃if试试,
在HarmonyOS鸿蒙Next中,发送数据给后台时,可以使用ohos.net.http
模块中的HttpRequest
类来封装和发送数据。对于Map数据的封装,可以通过RequestData
对象进行处理。
-
封装普通数据: 使用
RequestData
对象,可以通过add
方法添加键值对数据。例如:let requestData = new http.RequestData(); requestData.add("key1", "value1"); requestData.add("key2", "value2");
-
封装Map数据: 如果数据是Map类型,可以通过遍历Map并将键值对添加到
RequestData
中。例如:let mapData = new Map(); mapData.set("key1", "value1"); mapData.set("key2", "value2"); let requestData = new http.RequestData(); mapData.forEach((value, key) => { requestData.add(key, value); });
-
发送数据: 使用
HttpRequest
对象发送数据时,可以将RequestData
对象作为请求体传递。例如:let httpRequest = http.createHttp(); let requestOptions = { method: http.RequestMethod.POST, extraData: requestData }; httpRequest.request("https://example.com/api", requestOptions, (err, data) => { if (err) { console.error("Request failed: " + err.message); } else { console.log("Response data: " + data.result); } });
通过以上方式,可以在HarmonyOS鸿蒙Next中封装并发送数据给后台。
在HarmonyOS(鸿蒙Next)中,发送数据给后台时,通常使用HttpURLConnection
或OkHttp
等网络库。若需封装Map数据,可将其转换为JSON格式。以下是一个示例:
import ohos.utils.zson.ZSON;
import java.util.HashMap;
import java.util.Map;
public class DataSender {
public static String sendData(Map<String, Object> data) {
String jsonData = ZSON.toJsonString(data);
// 使用HttpURLConnection或OkHttp发送jsonData
return jsonData;
}
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
String json = sendData(map);
System.out.println(json);
}
}
此代码将Map转换为JSON字符串,便于网络传输。