HarmonyOS 鸿蒙Next HTTP请求部分地址无法获取完整数据
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(
let resp = await httpRequest.request(url, opt)
// if (error) {
// console.error(
// } else {
if (http.ResponseCode.OK === resp.responseCode) {
let imageBuffer: ArrayBuffer = resp.result as ArrayBuffer;
console.log(
// }
resolve(imageBuffer);
} else {
console.log(
reject()
}
console.log(
// return imageBuf
});
return ret; // 支持。直接返回Promise的结果。
}
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请求部分地址无法获取完整数据的问题,这通常与数据解析、请求配置或系统兼容性有关。以下是一些可能的解决方案:
-
检查数据解析:确保接收到的数据格式正确,且与预期的Java对象模型匹配。使用如Gson或Jackson等库时,检查字段名、数据类型是否一一对应。
-
检查请求配置:
- 确保HTTP请求的URL地址正确无误。
- 检查请求头中的
Content-Type
和Accept
字段是否设置正确,以匹配服务器返回的编码格式(如UTF-8)。 - 如果请求需要特定的权限或认证信息,请确保这些已正确配置。
-
系统兼容性:
- 检查所使用的HTTP客户端库是否支持HarmonyOS系统,并查看是否有相关更新或补丁可用。
- 尝试在不同的HarmonyOS版本或设备上复现问题,以确定是否为特定版本的bug。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。