18e9cee63Sopenharmony_ci 28e9cee63Sopenharmony_ci 38e9cee63Sopenharmony_ci# Request服务 48e9cee63Sopenharmony_ci## 简介 58e9cee63Sopenharmony_ci### 内容介绍 68e9cee63Sopenharmony_ci 78e9cee63Sopenharmony_ciRequest服务向三方应用提供文件下载/上传能力,以支撑应用开发者方便、高效地使用下载/上传业务的功能。 88e9cee63Sopenharmony_ci 98e9cee63Sopenharmony_ci下载支持后台管理能力,通过download(downloadFile)接口新建任务,请求成功后会通过异步方式返回task对象。用户可以通过task对象管理任务,支持新建、移除、暂停、恢复以及查询任务,以及订阅任务进度、成功、失败等能力。 108e9cee63Sopenharmony_ci 118e9cee63Sopenharmony_ci上传任务在客户端运行,通过upload(uploadFile)接口新建任务,请求成功后会通过异步方式返回task对象。上传支持新建、移除任务,以及订阅任务进度、成功、失败等能力。 128e9cee63Sopenharmony_ci 138e9cee63Sopenharmony_ci### 架构图介绍 148e9cee63Sopenharmony_ci 158e9cee63Sopenharmony_ci**图 1** 下载子系统架构图 168e9cee63Sopenharmony_ci 178e9cee63Sopenharmony_ci 188e9cee63Sopenharmony_ci 198e9cee63Sopenharmony_ci系统应用:依赖的系统应用如浏览器等。 208e9cee63Sopenharmony_ci 218e9cee63Sopenharmony_ci三方应用:依赖的第三方应用如淘宝等。 228e9cee63Sopenharmony_ci 238e9cee63Sopenharmony_ci下载 API:提供下载功能的接口。 248e9cee63Sopenharmony_ci 258e9cee63Sopenharmony_ciIDL:提供NAPI之间的相互通信。 268e9cee63Sopenharmony_ci 278e9cee63Sopenharmony_ci下载服务:负责下载的具体过程,客户端发起一个下载请求,下载内部创建下载任务,处理下载请求并完成下载任务。 288e9cee63Sopenharmony_ci 298e9cee63Sopenharmony_ci**图 2** 上传子系统架构图 308e9cee63Sopenharmony_ci 318e9cee63Sopenharmony_ci 328e9cee63Sopenharmony_ci扩展/三方 应用:上传功能的客户端,是上传的发起方。 338e9cee63Sopenharmony_ci 348e9cee63Sopenharmony_ciJS接口:对外提供上传功能JS接口。 358e9cee63Sopenharmony_ci 368e9cee63Sopenharmony_ci本地接口:上传本地文件的接口。 378e9cee63Sopenharmony_ci 388e9cee63Sopenharmony_ci上传任务:客户端每发起一个上传请求,上传内部都会创建一个上传任务,用于处理上传请求,转发服务器的上传应答。 398e9cee63Sopenharmony_ci 408e9cee63Sopenharmony_cilibcurl: 封装libcurl接口完成上传。 418e9cee63Sopenharmony_ci 428e9cee63Sopenharmony_ci## 目录 438e9cee63Sopenharmony_ci 448e9cee63Sopenharmony_ci``` 458e9cee63Sopenharmony_ci/base/request/request 468e9cee63Sopenharmony_ci├── figures # 架构图 478e9cee63Sopenharmony_ci├── download/ability # 下载服务数据库管理模块 488e9cee63Sopenharmony_ci├── download/etc # 下载服务包含的进程配置文件 498e9cee63Sopenharmony_ci └──interfaces/kits/js/napi # 本组件对外提供的下载服务接口代码 508e9cee63Sopenharmony_ci └──download_single # 下载服务的napi接口 518e9cee63Sopenharmony_ci├── download/sa_profile # 下载服务包含的系统服务的配置文件 528e9cee63Sopenharmony_ci├── download/services # 下载系统服务实现 538e9cee63Sopenharmony_ci├── download/utils # 下载服务包含日志打印和公共事件定义的常量 548e9cee63Sopenharmony_ci├── upload/frameworks # 上传服务功能实现 558e9cee63Sopenharmony_ci├── upload/interfaces/kits # 本组件对外提供的上传服务接口代码 568e9cee63Sopenharmony_ci│ ├── js # 本组件js接口定义 578e9cee63Sopenharmony_ci│ └── napi # 上传服务的napi接口 588e9cee63Sopenharmony_ci└── upload/unitest # 上传模块的单元测试 598e9cee63Sopenharmony_ci``` 608e9cee63Sopenharmony_ci 618e9cee63Sopenharmony_ci## 约束 628e9cee63Sopenharmony_ci 638e9cee63Sopenharmony_ci- 如需使用request服务,需要申请如下权限: 648e9cee63Sopenharmony_ci - ohos.permission.INTERNET 658e9cee63Sopenharmony_ci - ohos.permission.WRITE_MEDIA 668e9cee63Sopenharmony_ci - ohos.permission.READ_MEDIA 678e9cee63Sopenharmony_ci- request数据单元为文件形式,其余数据形式需要调用者自行封装为文件路径。 688e9cee63Sopenharmony_ci- request服务不提供完整的HTTP/HTTPS SDK接口,只是HTTP/HTTPS SDK 的用户,如需此接口推荐使用[NetStack](https://gitee.com/openharmony/communication_netstack)。 698e9cee63Sopenharmony_ci- 下载服务器需要支持HTTP协议的head方法,能够通过Content-length获取下载数据大小,否则下载任务失败。 708e9cee63Sopenharmony_ci- 下载时用户指定文件已存在,会在创建任务时校验并抛出异常,创建任务失败。 718e9cee63Sopenharmony_ci- 允许用户指定多文件上传成功策略:多文件在同一个任务中上传,以任务维度为判断标准,必须所有文件上传成功判定为成功。 728e9cee63Sopenharmony_ci 738e9cee63Sopenharmony_ci 748e9cee63Sopenharmony_ci## 说明 758e9cee63Sopenharmony_ci### 接口说明 768e9cee63Sopenharmony_ci- Request接口文档 778e9cee63Sopenharmony_ci - [js-apis-request.md](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-request.md) 提供从API version 6开始接口定义和示例代码。 788e9cee63Sopenharmony_ci - [js-apis-system-request.md](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-system-request.md) 提供从API version 3开始接口定义和示例代码,此文档接口从API version 9开始已全部废弃,不推荐使用。 798e9cee63Sopenharmony_ci 808e9cee63Sopenharmony_ci 818e9cee63Sopenharmony_ci 828e9cee63Sopenharmony_ci## 相关仓 838e9cee63Sopenharmony_ci 848e9cee63Sopenharmony_ci[request_request](https://gitee.com/openharmony/request_request)