HarmonyOS鸿蒙Next中本地服务使用downloadFile局域网下载失败,可能是什么引起的

HarmonyOS鸿蒙Next中本地服务使用downloadFile局域网下载失败,可能是什么引起的 【问题描述】:本地服务使用downloadFile局域网下载失败

【问题现象】:错误码:8,除错误码外没有日志, 图片

【版本信息】 :API版本5.0.2(14)

【复现代码】:不涉及

【尝试解决方案】:下载任务的请求头header中添加User-Agent信息,来模拟浏览器下载行为,完成下载任务。未解决


更多关于HarmonyOS鸿蒙Next中本地服务使用downloadFile局域网下载失败,可能是什么引起的的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

没有改动代码,第二天又能正常使用,就是问一下出现错误码8,可能是什么原因

更多关于HarmonyOS鸿蒙Next中本地服务使用downloadFile局域网下载失败,可能是什么引起的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,官网文档对这个错误码的解释是未知错误,下载任务错误码:未知错误。

例如:API version 12及以下版本,系统仅支持串行地尝试连接域名相关IP,不支持单个IP的连接时间控制。若DNS返回的首个IP被阻塞,可能会由于握手超时导致ERROR_UNKNOWN错误。错误码参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-request#常量,需要开发者提供复现问题的代码demo或者关键代码片段、出现问题的全量日志信息(app内日志可能没有捕获到错误日志,可以查看下全量日志是否有错误日志信息打印,可以参考这个文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-setup-hilog#section17458193320117,选择“All logs of selected app”或者“No filters”选项查看是否有错误日志打印)

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

开发者您好,为了进一步分析问题,麻烦请提供一下信息:

  1. 麻烦提供下完整点的代码demo,本地测试官网的代码demo没有复现出来开发者的问题,代码如下:
// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
try {
  // 需要手动将url替换为真实服务器的HTTP协议地址
  request.downloadFile(context, { url: 'xxxxxxxxx' }).then((data: request.DownloadTask) => {
    let downloadTask: request.DownloadTask = data;
    let progressCallback = (receivedSize: number, totalSize: number) => {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
    };
    downloadTask.on('progress', progressCallback);
    let failCallback = (err: number) => {
      console.error(`Failed to download the task. Code: ${err}`);
    };
    downloadTask.on('fail', failCallback);
  }).catch((err: BusinessError) => {
    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
  })
} catch (err) {
  console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
}
  1. 只是局域网络下载失败吗,其他网络下载是否正常,比如外部公共网络。

在HarmonyOS鸿蒙Next中,downloadFile局域网下载失败可能由以下原因导致:

  1. 网络配置问题:设备未连接到同一局域网,或网络防火墙、路由器设置阻止了本地服务通信。
  2. 权限未正确配置:应用缺少必要的网络权限(如ohos.permission.INTERNET)或本地服务访问权限。
  3. 服务地址或端口错误:downloadFile调用时指定的本地服务URL或端口不正确,导致无法建立连接。
  4. 服务未正常运行:目标设备上的本地下载服务未启动或运行异常。
  5. 系统安全限制:鸿蒙Next的安全机制可能限制了跨设备或本地网络的文件传输操作。

错误码8通常表示网络连接问题。在HarmonyOS Next的局域网下载场景中,这很可能由以下几个原因导致:

  1. 网络权限未配置或配置不正确:请确保在module.json5文件中已正确声明网络权限。对于局域网下载,通常需要ohos.permission.INTERNET权限。请检查权限声明是否准确,且设备上已授予该权限。

  2. 本地服务地址或端口不可达downloadFile API中指定的URL(例如 http://192.168.x.x:port/file)可能不正确。请确认:

    • 提供文件的本地服务器(如电脑上的简易HTTP服务器)的IP地址在局域网内是否有效且稳定。
    • 服务器端口是否已正确开放,且未被防火墙或安全软件阻止。
    • 手机与服务器是否在同一局域网网段内。
  3. 服务器响应不符合预期downloadFile API对服务器的响应有一定要求。确保你的本地HTTP服务器能正确处理GET请求,并返回正确的文件流和Content-Type等头部信息。可以尝试在电脑浏览器中直接访问该下载URL,确认文件能否正常下载。

  4. HTTPS与HTTP混用:如果应用声明了网络安全配置,可能限制了明文HTTP流量。对于纯局域网HTTP服务,需要在network_config.xml文件中进行相应配置以允许HTTP访问。

建议按以下步骤排查:

  • 首先,使用其他设备或电脑上的浏览器,访问你代码中使用的完整下载URL,验证服务是否正常。
  • 其次,检查HarmonyOS应用项目的权限和网络配置文件。
  • 最后,在代码中捕获更详细的异常信息,或使用网络调试工具查看具体的请求与响应过程。
回到顶部