HarmonyOS 鸿蒙Next 网络请求返回的HttpResponse获取header正常,但获取result时代码不执行
HarmonyOS 鸿蒙Next 网络请求返回的HttpResponse获取header正常,但获取result时代码不执行
post1<T>(url: string, data: any): Promise<T> {
hilog.info(0x0000, ‘BRICKS’, ‘POST:’ + url)
hilog.info(0x0000, ‘BRICKS’, ‘参数:’ + JSON.stringify(data))
let httpRequest = http.createHttp()
return httpRequest.request(url, {
method: http.RequestMethod.POST,
header: {
‘Content-Type’: ‘application/json’
},
extraData: data,
connectTimeout: 10000,
readTimeout: 10000,
}).then(data => {
hilog.info(0x0000, ‘BRICKS’, ‘code:’ + JSON.stringify(data.responseCode))
hilog.info(0x0000, ‘BRICKS’, ‘result:’ + JSON.stringify(data.result))
hilog.info(0x0000, ‘BRICKS’, ‘header:’ + JSON.stringify(data.header))
if (data.responseCode === http.ResponseCode.OK) {
hilog.info(0x0000, ‘BRICKS’, ${data.cookies}
)
let apiResult = JSON.parse(data.result.toString()) as T
return apiResult
} else {
hilog.info(0x0000, ‘BRICKS’, ‘ELSE’)
return Promise.reject(data.result + ( ${data.responseCode} )
)
}
}).catch(error => {
hilog.info(0x0000, ‘BRICKS’, ‘失败:’ + JSON.stringify(error))
return Promise.reject(‘网络请求失败,请稍后再试!’)
})
}
代码如上,打印的日志结果显示: 12-23 15:01:34.218 11006-251/? I 00000/BRICKS: POST:http://op.zsmarter.com/operation/visual/app/getModuleVoByCode 12-23 15:01:34.218 11006-251/? I 00000/BRICKS: 参数:{“moduleCode”:“vip”,“moduleVersion”:“1.0.0”,“labId”:-1,“clientVersion”:“1.1.1.6”,“imei”:“1234567890abcdefghijklmnopqrstuvwxyz”,“appKey”:“fVypc8azVR9tLnypC1VAxw==”,“inside”:0,“prd”:0} 12-23 15:01:34.330 11006-251/? I 00000/BRICKS: code:200 12-23 15:01:34.330 11006-251/? I 00000/BRICKS: header:{“connection”:“keep-alive”,“content-type”:“application/json;charset=UTF-8”,“date”:“Fri, 23 Dec 2022 07:01:34 GMT”,“keep-alive”:“timeout=120”,“server”:“nginx”,“transfer-encoding”:“chunked”}
日志里面打印出了code和header,却没有打印出result。
更多关于HarmonyOS 鸿蒙Next 网络请求返回的HttpResponse获取header正常,但获取result时代码不执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
楼主你好,这个可能是由于result这个对象太长,导致hilog打印失败或者打印不全导致的,谢谢反馈,这边已经反馈给开发者
更多关于HarmonyOS 鸿蒙Next 网络请求返回的HttpResponse获取header正常,但获取result时代码不执行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对帖子标题中提到的HarmonyOS(鸿蒙)Next网络请求问题,即HttpResponse获取header正常但获取result时代码不执行的情况,可能的原因及解决方案如下:
-
数据解析异常:检查从HttpResponse中获取result部分的代码,确认是否使用了正确的数据解析方式(如JSON、XML等)。如果解析方式不匹配或数据格式有误,代码可能会在执行到解析步骤时异常终止。
-
空指针或异常处理:确认在获取result前,HttpResponse对象及其相关属性(如status code, content等)是否非空且有效。同时,检查代码中是否有足够的异常处理逻辑来捕获并处理可能发生的异常。
-
线程或异步处理:如果网络请求是在异步线程中执行的,确保获取result的代码在正确的线程或回调中执行。异步编程中,常见的问题是代码执行顺序不符合预期。
-
内存或资源限制:检查设备或应用的内存使用情况,确认是否因内存不足导致代码执行中断。同时,检查是否有资源泄露问题,如未关闭的网络连接或文件句柄。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,