HarmonyOS 鸿蒙Next HTTP请求部分地址无法获取完整数据

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

HarmonyOS 鸿蒙Next HTTP请求部分地址无法获取完整数据

export async function downLoad(src: string): Promise<ArrayBuffer | undefined> {
if (!src) {
return
}
let ret = await new Promise<ArrayBuffer | undefined>(async (resolve, reject) => {
if (!src) {
reject()
}
console.info(“ImageKnife:: custom download:” + src)
// 每一个httpRequest对应一个HTTP请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on(‘headersReceive’, Callback)替代on(‘headerReceive’, AsyncCallback)。 8+
httpRequest.on(‘headersReceive’, (header) => {
console.info('header: ’ + JSON.stringify(header));
});

let opt: http.HttpRequestOptions = {
method: http.RequestMethod.GET, // 可选,默认为http.RequestMethod.GET
connectTimeout: 60000, // 可选,默认为60000ms
readTimeout: 60000, // 可选,默认为60000ms
}
let url = src.toString()
console.log(httpRequest Request start ${Date()});
let resp = await httpRequest.request(url, opt)
// if (error) {
// console.error(http reqeust failed with. Code: ${error.code}, message: ${error.message});
// } else {
if (http.ResponseCode.OK === resp.responseCode) {
let imageBuffer: ArrayBuffer = resp.result as ArrayBuffer;
console.log(http reqeust success with. imageBuffer: ${JSON.stringify(imageBuffer)});
// }
resolve(imageBuffer);
} else {
console.log(httpRequest Request error ${Date()});
reject()
}
console.log(httpRequest Request end ${Date()});
// return imageBuf
});
return ret; // 支持。直接返回Promise的结果。
}

2 回复
console.log 打印有长度限制,会打印不全

针对HarmonyOS 鸿蒙Next HTTP请求部分地址无法获取完整数据的问题,这通常与数据解析、请求配置或系统兼容性有关。以下是一些可能的解决方案:

  1. 检查数据解析:确保接收到的数据格式正确,且与预期的Java对象模型匹配。使用如Gson或Jackson等库时,检查字段名、数据类型是否一一对应。

  2. 检查请求配置

    • 确保HTTP请求的URL地址正确无误。
    • 检查请求头中的Content-TypeAccept字段是否设置正确,以匹配服务器返回的编码格式(如UTF-8)。
    • 如果请求需要特定的权限或认证信息,请确保这些已正确配置。
  3. 系统兼容性

    • 检查所使用的HTTP客户端库是否支持HarmonyOS系统,并查看是否有相关更新或补丁可用。
    • 尝试在不同的HarmonyOS版本或设备上复现问题,以确定是否为特定版本的bug。

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

回到顶部