HarmonyOS 鸿蒙Next Http请求中的 Post 请求,如何将 extraData 作为参数传递使用

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

HarmonyOS 鸿蒙Next Http请求中的 Post 请求,如何将 extraData 作为参数传递使用

咨询描述:想将 extraData 作为参数传递,不知道如何操作

httpRequestPostDoMain(domain:string, url:string, object:object):Promise<CkResponseResult > {
le thttpRequest = http.createHttp();
let responseResult = httpRequest.request(url, {
method: http.RequestMethod.POST,
readTimeout: Constant.NETWORK_TIME_OUT,
header: {
‘Content-Type’: ‘application/json; charset=UTF-8’,
//TODO 用户信息需要后面补充
‘userToken’: ‘’,
‘Cookie’: ‘’,
‘token’: ‘’,
‘Terminal’: ‘HuaWei’,
‘Accept-Encoding’: ‘gzip, deflate’,
‘Accept’: ‘application/json,text/javascript,/;charset=UTF-8’,
},
connectTimeout: Constant.NETWORK_TIME_OUT,
extraData: object
});
let serverData: CkResponseResult = new CkResponseResult();
return responseResult.then((value: http.HttpResponse)=>{
//接口请求成功
if(value.responseCode===200){
//获取返回的数据
let result = ${value.result}
//转换JSON
let resultJson: CkResponseResult = JSON.parse(result)
//
if( resultJson.status===Constant.CK_NETWORK_YES) {
serverData.data = resultJson.data;
}
serverData.status = resultJson.status;
serverData.msg = resultJson.msg;
}
else {
serverData.msg = ‘接口数据异常’ + value.responseCode;
}
return serverData;}).catch(() => {
serverData.msg = ‘接口数据异常’
return serverData;
})}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

2 回复
看到您将object参数传给了extraData,请问您是打算将键值对(Map)作为httpRequestPostDoMain方法的形参吗?想传map类型的键值对数据,但却接收不到,可以将map数据通过遍历转存到Record中,再进一步可以将Record转成JSON格式传递,就可以接收到了。

代码参考:

Map2Record(): object {
  const map = new Map([
    ['name', 'AAA'],
    ['sex', 'male'],
    ['age', '20']
  ]);

let jsonObject: Record<string, Object> = {}; map.forEach((value, key) => { if (undefined != key && undefined != value) { jsonObject[key] = value; } })

// return jsonObject; let info = JSON.stringify(jsonObject); return new Object(info); }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS鸿蒙系统中进行HTTP的POST请求时,若需将extraData作为参数传递,通常可以通过以下步骤实现:

  1. 构建请求体:首先,将extraData序列化为JSON字符串或其他适合传输的格式。如果extraData是复杂对象,可以使用JSON库(如Gson或Fastjson)进行序列化。

  2. 设置请求头:确保在HTTP请求头中设置Content-Typeapplication/json(如果数据是以JSON格式发送的)。这有助于服务器正确解析请求体。

  3. 发送POST请求:使用HarmonyOS提供的网络请求API(如HttpURLConnection或第三方库如OkHttp)发送POST请求,并将序列化后的extraData作为请求体发送。

  4. 处理响应:接收服务器响应,并根据需要解析响应内容。

示例代码(伪代码,具体实现需根据HarmonyOS API调整):

String jsonData = JsonUtils.toJsonString(extraData);
HttpURLConnection connection = (HttpURLConnection) new URL("your-url").openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
os.write(jsonData.getBytes("UTF-8"));
os.flush();
os.close();

// 处理响应...

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

回到顶部