1e41f4b71Sopenharmony_ci# @ohos.request (上传下载)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_cirequest部件主要给应用提供上传下载文件、后台传输代理的基础能力。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci## 导入模块
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci```js
14e41f4b71Sopenharmony_ciimport { request } from '@kit.BasicServicesKit';
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## 常量
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci### 网络类型
22e41f4b71Sopenharmony_ci下载支持自定义网络类型,可以在[DownloadConfig](#downloadconfig)中通过networkType配置成以下网络类型。
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci| 名称 | 参数类型 | 数值 | 说明 |
25e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
26e41f4b71Sopenharmony_ci| NETWORK_MOBILE | number | 0x00000001 | 使用蜂窝网络时允许下载的位标志。 |
27e41f4b71Sopenharmony_ci| NETWORK_WIFI | number | 0x00010000 | 使用WLAN时允许下载的位标志。 |
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci### 下载任务的错误码
30e41f4b71Sopenharmony_ci下载[on('fail')<sup>7+</sup>](#onfail7)事件callback的错误参数、[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的failedReason字段取值。
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| 名称 | 参数类型 | 数值 | 说明 |
33e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
34e41f4b71Sopenharmony_ci| ERROR_CANNOT_RESUME<sup>7+</sup> | number |   0   | 网络原因导致恢复下载失败。 |
35e41f4b71Sopenharmony_ci| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number |   1   | 找不到SD卡等存储设备。 |
36e41f4b71Sopenharmony_ci| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number |   2   | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
37e41f4b71Sopenharmony_ci| ERROR_FILE_ERROR<sup>7+</sup> | number |   3   | 文件操作失败。 |
38e41f4b71Sopenharmony_ci| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number |   4   | HTTP传输失败。 |
39e41f4b71Sopenharmony_ci| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number |   5   | 存储空间不足。 |
40e41f4b71Sopenharmony_ci| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number |   6   | 网络重定向过多导致的错误。 |
41e41f4b71Sopenharmony_ci| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number |   7   | 无法识别的HTTP代码。 |
42e41f4b71Sopenharmony_ci| ERROR_UNKNOWN<sup>7+</sup> | number |   8   | 未知错误。(例如API version 12及以下版本,只支持串行的尝试连接域名相关ip,且不支持单个ip的连接时间控制,如果DNS返回的首个ip是阻塞的,可能握手超时造成ERROR_UNKNOWN错误。) |
43e41f4b71Sopenharmony_ci| ERROR_OFFLINE<sup>9+</sup> | number |   9   | 网络未连接。 |
44e41f4b71Sopenharmony_ci| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number |   10   | 网络类型不匹配。 |
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci### 下载任务暂停原因
47e41f4b71Sopenharmony_ci下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的pausedReason字段取值。
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci| 名称 | 参数类型 | 数值 | 说明 |
50e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
51e41f4b71Sopenharmony_ci| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number |   0   | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
52e41f4b71Sopenharmony_ci| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number |   1   | 由于网络问题(例如网络断开)而暂停下载。 |
53e41f4b71Sopenharmony_ci| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number |   2   | 发生网络错误,将重试下载会话。 |
54e41f4b71Sopenharmony_ci| PAUSED_BY_USER<sup>9+</sup> | number |   3   | 用户暂停会话。 |
55e41f4b71Sopenharmony_ci| PAUSED_UNKNOWN<sup>7+</sup> | number |   4   | 未知原因导致暂停下载。 |
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci### 下载任务状态码
58e41f4b71Sopenharmony_ci下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的status字段取值。
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci| 名称 | 参数类型 | 数值 | 说明 |
61e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
62e41f4b71Sopenharmony_ci| SESSION_SUCCESSFUL<sup>7+</sup> | number |   0   | 下载会话已完成。 |
63e41f4b71Sopenharmony_ci| SESSION_RUNNING<sup>7+</sup> | number |   1   | 下载会话正在进行中。 |
64e41f4b71Sopenharmony_ci| SESSION_PENDING<sup>7+</sup> | number |   2   | 正在调度下载会话。 |
65e41f4b71Sopenharmony_ci| SESSION_PAUSED<sup>7+</sup> | number |   3   | 下载会话已暂停。 |
66e41f4b71Sopenharmony_ci| SESSION_FAILED<sup>7+</sup> | number |   4   | 下载会话已失败,将不会重试。 |
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci## request.uploadFile<sup>9+</sup>
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ciuploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci上传,异步方法,使用promise形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci**参数:**
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
82e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
83e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
84e41f4b71Sopenharmony_ci  | config | [UploadConfig](#uploadconfig6) | 是 | 上传的配置信息。 |
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**返回值:**
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci  | 类型 | 说明 |
90e41f4b71Sopenharmony_ci  | -------- | -------- |
91e41f4b71Sopenharmony_ci  | Promise&lt;[UploadTask](#uploadtask)&gt; | 使用Promise方式,异步返回上传任务UploadTask的Promise对象。 |
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci**错误码:**
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
98e41f4b71Sopenharmony_ci  | -------- | -------- |
99e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
100e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
101e41f4b71Sopenharmony_ci  | 13400002 | bad file path. |
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci**示例:**
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci  ```ts
106e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci  let uploadTask: request.UploadTask;
109e41f4b71Sopenharmony_ci  let uploadConfig: request.UploadConfig = {
110e41f4b71Sopenharmony_ci    url: 'http://www.example.com', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
111e41f4b71Sopenharmony_ci    header: { 'Accept': '*/*' },
112e41f4b71Sopenharmony_ci    method: "POST",
113e41f4b71Sopenharmony_ci    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
114e41f4b71Sopenharmony_ci    data: [{ name: "name123", value: "123" }],
115e41f4b71Sopenharmony_ci  };
116e41f4b71Sopenharmony_ci  try {
117e41f4b71Sopenharmony_ci    request.uploadFile(getContext(), uploadConfig).then((data: request.UploadTask) => {
118e41f4b71Sopenharmony_ci      uploadTask = data;
119e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
120e41f4b71Sopenharmony_ci      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
121e41f4b71Sopenharmony_ci    });
122e41f4b71Sopenharmony_ci  } catch (err) {
123e41f4b71Sopenharmony_ci    console.error(`Failed to request the upload. err: ${JSON.stringify(err)}`);
124e41f4b71Sopenharmony_ci  }
125e41f4b71Sopenharmony_ci  ```
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci> **说明:**
128e41f4b71Sopenharmony_ci>
129e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci## request.uploadFile<sup>9+</sup>
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ciuploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci上传,异步方法,使用callback形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci**参数:**
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
145e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
146e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
147e41f4b71Sopenharmony_ci  | config | [UploadConfig](#uploadconfig6) | 是 | 上传的配置信息。 |
148e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。当上传成功,err为undefined,data为获取到的UploadTask对象;否则为错误对象。 |
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci**错误码:**
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
155e41f4b71Sopenharmony_ci  | -------- | -------- |
156e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
157e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
158e41f4b71Sopenharmony_ci  | 13400002 | bad file path. |
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**示例:**
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci  ```ts
163e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci  let uploadTask: request.UploadTask;
166e41f4b71Sopenharmony_ci  let uploadConfig: request.UploadConfig = {
167e41f4b71Sopenharmony_ci    url: 'http://www.example.com', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
168e41f4b71Sopenharmony_ci    header: { 'Accept': '*/*' },
169e41f4b71Sopenharmony_ci    method: "POST",
170e41f4b71Sopenharmony_ci    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
171e41f4b71Sopenharmony_ci    data: [{ name: "name123", value: "123" }],
172e41f4b71Sopenharmony_ci  };
173e41f4b71Sopenharmony_ci  try {
174e41f4b71Sopenharmony_ci    request.uploadFile(getContext(), uploadConfig, (err: BusinessError, data: request.UploadTask) => {
175e41f4b71Sopenharmony_ci      if (err) {
176e41f4b71Sopenharmony_ci        console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
177e41f4b71Sopenharmony_ci        return;
178e41f4b71Sopenharmony_ci      }
179e41f4b71Sopenharmony_ci      uploadTask = data;
180e41f4b71Sopenharmony_ci    });
181e41f4b71Sopenharmony_ci  } catch (err) {
182e41f4b71Sopenharmony_ci    console.error(`Failed to request the upload. err: ${JSON.stringify(err)}`);
183e41f4b71Sopenharmony_ci  }
184e41f4b71Sopenharmony_ci  ```
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci> **说明:**
187e41f4b71Sopenharmony_ci>
188e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci## request.upload<sup>(deprecated)</sup>
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ciupload(config: UploadConfig): Promise&lt;UploadTask&gt;
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci上传,异步方法,使用promise形式返回结果。
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在FA模型下使用
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci> **说明:**
199e41f4b71Sopenharmony_ci>
200e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9)替代。
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**参数:**
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
209e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
210e41f4b71Sopenharmony_ci  | config | [UploadConfig](#uploadconfig6) | 是 | 上传的配置信息。 |
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**返回值:**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci  | 类型 | 说明 |
215e41f4b71Sopenharmony_ci  | -------- | -------- |
216e41f4b71Sopenharmony_ci  | Promise&lt;[UploadTask](#uploadtask)&gt; | 使用Promise方式,异步返回上传任务UploadTask的Promise对象。 |
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci**错误码:**
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
223e41f4b71Sopenharmony_ci  | -------- | -------- |
224e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci**示例:**
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci  ```js
229e41f4b71Sopenharmony_ci  let uploadTask;
230e41f4b71Sopenharmony_ci  let uploadConfig = {
231e41f4b71Sopenharmony_ci    url: 'http://www.example.com', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
232e41f4b71Sopenharmony_ci    header: { 'Accept': '*/*' },
233e41f4b71Sopenharmony_ci    method: "POST",
234e41f4b71Sopenharmony_ci    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
235e41f4b71Sopenharmony_ci    data: [{ name: "name123", value: "123" }],
236e41f4b71Sopenharmony_ci  };
237e41f4b71Sopenharmony_ci  request.upload(uploadConfig).then((data) => {
238e41f4b71Sopenharmony_ci    uploadTask = data;
239e41f4b71Sopenharmony_ci  }).catch((err) => {
240e41f4b71Sopenharmony_ci    console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
241e41f4b71Sopenharmony_ci  })
242e41f4b71Sopenharmony_ci  ```
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci## request.upload<sup>(deprecated)</sup>
246e41f4b71Sopenharmony_ci
247e41f4b71Sopenharmony_ciupload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci上传,异步方法,使用callback形式返回结果。
250e41f4b71Sopenharmony_ci
251e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在FA模型下使用
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ci> **说明:**
254e41f4b71Sopenharmony_ci>
255e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)替代。
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
260e41f4b71Sopenharmony_ci
261e41f4b71Sopenharmony_ci**参数:**
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
264e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
265e41f4b71Sopenharmony_ci  | config | [UploadConfig](#uploadconfig6) | 是 | 上传的配置信息。 |
266e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。当上传成功,err为undefined,data为获取到的UploadTask对象;否则为错误对象。 |
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_ci**错误码:**
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
273e41f4b71Sopenharmony_ci  | -------- | -------- |
274e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci**示例:**
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci  ```js
279e41f4b71Sopenharmony_ci  let uploadTask;
280e41f4b71Sopenharmony_ci  let uploadConfig = {
281e41f4b71Sopenharmony_ci    url: 'http://www.example.com', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
282e41f4b71Sopenharmony_ci    header: { 'Accept': '*/*' },
283e41f4b71Sopenharmony_ci    method: "POST",
284e41f4b71Sopenharmony_ci    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
285e41f4b71Sopenharmony_ci    data: [{ name: "name123", value: "123" }],
286e41f4b71Sopenharmony_ci  };
287e41f4b71Sopenharmony_ci  request.upload(uploadConfig, (err, data) => {
288e41f4b71Sopenharmony_ci    if (err) {
289e41f4b71Sopenharmony_ci      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
290e41f4b71Sopenharmony_ci      return;
291e41f4b71Sopenharmony_ci    }
292e41f4b71Sopenharmony_ci    uploadTask = data;
293e41f4b71Sopenharmony_ci  });
294e41f4b71Sopenharmony_ci  ```
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci## UploadTask
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci上传任务,使用下列方法前,需要先获取UploadTask对象,promise形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9)获取,callback形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)获取。
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci### on('progress')
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_cion(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci订阅上传任务进度事件,异步方法,使用callback形式返回结果。
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci> **说明:**
309e41f4b71Sopenharmony_ci>
310e41f4b71Sopenharmony_ci> 当应用处于后台时,为满足功耗性能要求,不支持调用此接口进行回调。
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci**参数:**
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
317e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
318e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型,取值为'progress'(上传任务的进度信息)。 |
319e41f4b71Sopenharmony_ci  | callback | function | 是 | 上传任务进度的回调函数,返回已上传文件大小和上传文件总大小。 |
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci  回调函数的参数
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
324e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
325e41f4b71Sopenharmony_ci| uploadedSize | number | 是 | 当前已上传文件大小,单位为字节。 |
326e41f4b71Sopenharmony_ci| totalSize | number | 是 | 上传文件的总大小,单位为字节。 |
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci**错误码:**
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
333e41f4b71Sopenharmony_ci  | -------- | -------- |
334e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**示例:**
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci<!--code_no_check-->
339e41f4b71Sopenharmony_ci  ```ts
340e41f4b71Sopenharmony_ci  let upProgressCallback = (uploadedSize: number, totalSize: number) => {
341e41f4b71Sopenharmony_ci    console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
342e41f4b71Sopenharmony_ci  };
343e41f4b71Sopenharmony_ci  uploadTask.on('progress', upProgressCallback);
344e41f4b71Sopenharmony_ci  ```
345e41f4b71Sopenharmony_ci
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci### on('headerReceive')<sup>7+</sup>
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_cion(type: 'headerReceive', callback:  (header: object) =&gt; void): void
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci订阅上传任务HTTP响应事件,异步方法,使用callback形式返回结果。
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**系统能力**: SystemCapability.MiscServices.Upload
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci**参数:**
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
358e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
359e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型,取值为'headerReceive'(接收响应)。 |
360e41f4b71Sopenharmony_ci  | callback | function | 是 | HTTP&nbsp;Response事件的回调函数,返回响应请求内容。 |
361e41f4b71Sopenharmony_ci
362e41f4b71Sopenharmony_ci  回调函数的参数:
363e41f4b71Sopenharmony_ci
364e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
365e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
366e41f4b71Sopenharmony_ci| header | object | 是 | HTTP&nbsp;Response。 |
367e41f4b71Sopenharmony_ci
368e41f4b71Sopenharmony_ci**错误码:**
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
373e41f4b71Sopenharmony_ci  | -------- | -------- |
374e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci**示例:**
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci<!--code_no_check-->
379e41f4b71Sopenharmony_ci  ```ts
380e41f4b71Sopenharmony_ci  let headerCallback = (headers: object) => {
381e41f4b71Sopenharmony_ci    console.info("upOnHeader headers:" + JSON.stringify(headers));
382e41f4b71Sopenharmony_ci  };
383e41f4b71Sopenharmony_ci  uploadTask.on('headerReceive', headerCallback);
384e41f4b71Sopenharmony_ci  ```
385e41f4b71Sopenharmony_ci
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci### on('complete' | 'fail')<sup>9+</sup>
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci on(type:'complete' | 'fail', callback: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci订阅上传任务完成或失败事件,异步方法,使用callback形式返回结果。
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ci**参数:**
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
398e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
399e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅上传任务的回调类型,支持的事件包括:`'complete'`\|`'fail'`。<br/>\-`'complete'`:表示上传任务完成。 <br/>\-`'fail'`:表示上传任务失败。 
400e41f4b71Sopenharmony_ci  | callback | Callback&lt;Array&lt;[TaskState](#taskstate9)&gt;&gt; | 是 | 上传任务完成或失败的回调函数。返回上传任务的任务状态信息。 |
401e41f4b71Sopenharmony_ci
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ci**错误码:**
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
406e41f4b71Sopenharmony_ci
407e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
408e41f4b71Sopenharmony_ci  | -------- | -------- |
409e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_ci**示例:**
412e41f4b71Sopenharmony_ci
413e41f4b71Sopenharmony_ci<!--code_no_check-->
414e41f4b71Sopenharmony_ci  ```ts
415e41f4b71Sopenharmony_ci  let upCompleteCallback = (taskStates: Array<request.TaskState>) => {
416e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
417e41f4b71Sopenharmony_ci      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
418e41f4b71Sopenharmony_ci    }
419e41f4b71Sopenharmony_ci  };
420e41f4b71Sopenharmony_ci  uploadTask.on('complete', upCompleteCallback);
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci  let upFailCallback = (taskStates: Array<request.TaskState>) => {
423e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
424e41f4b71Sopenharmony_ci      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
425e41f4b71Sopenharmony_ci    }
426e41f4b71Sopenharmony_ci  };
427e41f4b71Sopenharmony_ci  uploadTask.on('fail', upFailCallback);
428e41f4b71Sopenharmony_ci  ```
429e41f4b71Sopenharmony_ci
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci### off('progress')
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_cioff(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
434e41f4b71Sopenharmony_ci
435e41f4b71Sopenharmony_ci取消订阅上传任务进度事件。
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ci**参数:**
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
442e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
443e41f4b71Sopenharmony_ci  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
444e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
445e41f4b71Sopenharmony_ci
446e41f4b71Sopenharmony_ci回调函数的参数
447e41f4b71Sopenharmony_ci
448e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
449e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
450e41f4b71Sopenharmony_ci| uploadedSize | number | 是 | 当前已上传文件大小,单位为字节。 |
451e41f4b71Sopenharmony_ci| totalSize | number | 是 | 上传文件的总大小,单位为字节。 |
452e41f4b71Sopenharmony_ci**错误码:**
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
457e41f4b71Sopenharmony_ci  | -------- | -------- |
458e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci**示例:**
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_ci<!--code_no_check-->
463e41f4b71Sopenharmony_ci  ```ts
464e41f4b71Sopenharmony_ci  let upProgressCallback1 = (uploadedSize: number, totalSize: number) => {
465e41f4b71Sopenharmony_ci    console.info('Upload delete progress notification.' + 'totalSize:' + totalSize + 'uploadedSize:' + uploadedSize);
466e41f4b71Sopenharmony_ci  };
467e41f4b71Sopenharmony_ci  let upProgressCallback2 = (uploadedSize: number, totalSize: number) => {
468e41f4b71Sopenharmony_ci    console.info('Upload delete progress notification.' + 'totalSize:' + totalSize + 'uploadedSize:' + uploadedSize);
469e41f4b71Sopenharmony_ci  };
470e41f4b71Sopenharmony_ci  uploadTask.on('progress', upProgressCallback1);
471e41f4b71Sopenharmony_ci  uploadTask.on('progress', upProgressCallback2);
472e41f4b71Sopenharmony_ci  //表示取消upProgressCallback1的订阅
473e41f4b71Sopenharmony_ci  uploadTask.off('progress', upProgressCallback1);
474e41f4b71Sopenharmony_ci  //表示取消订阅上传任务进度事件的所有回调
475e41f4b71Sopenharmony_ci  uploadTask.off('progress');
476e41f4b71Sopenharmony_ci  ```
477e41f4b71Sopenharmony_ci
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci### off('headerReceive')<sup>7+</sup>
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_cioff(type: 'headerReceive', callback?: (header: object) =&gt; void): void
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ci取消订阅上传任务HTTP响应事件。
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ci**参数:**
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
490e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
491e41f4b71Sopenharmony_ci  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应)。 |
492e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
493e41f4b71Sopenharmony_ci
494e41f4b71Sopenharmony_ci**错误码:**
495e41f4b71Sopenharmony_ci
496e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
497e41f4b71Sopenharmony_ci
498e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
499e41f4b71Sopenharmony_ci  | -------- | -------- |
500e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
501e41f4b71Sopenharmony_ci
502e41f4b71Sopenharmony_ci**示例:**
503e41f4b71Sopenharmony_ci
504e41f4b71Sopenharmony_ci<!--code_no_check-->
505e41f4b71Sopenharmony_ci  ```ts
506e41f4b71Sopenharmony_ci  let headerCallback1 = (header: object) => {
507e41f4b71Sopenharmony_ci    console.info(`Upload delete headerReceive notification. header: ${JSON.stringify(header)}`);
508e41f4b71Sopenharmony_ci  };
509e41f4b71Sopenharmony_ci  let headerCallback2 = (header: object) => {
510e41f4b71Sopenharmony_ci    console.info(`Upload delete headerReceive notification. header: ${JSON.stringify(header)}`);
511e41f4b71Sopenharmony_ci  };
512e41f4b71Sopenharmony_ci  uploadTask.on('headerReceive', headerCallback1);
513e41f4b71Sopenharmony_ci  uploadTask.on('headerReceive', headerCallback2);
514e41f4b71Sopenharmony_ci  //表示取消headerCallback1的订阅
515e41f4b71Sopenharmony_ci  uploadTask.off('headerReceive', headerCallback1);
516e41f4b71Sopenharmony_ci  //表示取消订阅上传任务HTTP标头事件的所有回调
517e41f4b71Sopenharmony_ci  uploadTask.off('headerReceive');
518e41f4b71Sopenharmony_ci  ```
519e41f4b71Sopenharmony_ci
520e41f4b71Sopenharmony_ci### off('complete' | 'fail')<sup>9+</sup>
521e41f4b71Sopenharmony_ci
522e41f4b71Sopenharmony_ci off(type:'complete' | 'fail', callback?: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
523e41f4b71Sopenharmony_ci
524e41f4b71Sopenharmony_ci取消订阅上传任务完成或失败事件。
525e41f4b71Sopenharmony_ci
526e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
527e41f4b71Sopenharmony_ci
528e41f4b71Sopenharmony_ci**参数:**
529e41f4b71Sopenharmony_ci
530e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
531e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
532e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
533e41f4b71Sopenharmony_ci  | callback | Callback&lt;Array&lt;[TaskState](#taskstate9)&gt;&gt; | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
534e41f4b71Sopenharmony_ci
535e41f4b71Sopenharmony_ci**错误码:**
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
538e41f4b71Sopenharmony_ci
539e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
540e41f4b71Sopenharmony_ci  | -------- | -------- |
541e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
542e41f4b71Sopenharmony_ci
543e41f4b71Sopenharmony_ci**示例:**
544e41f4b71Sopenharmony_ci
545e41f4b71Sopenharmony_ci<!--code_no_check-->
546e41f4b71Sopenharmony_ci  ```ts
547e41f4b71Sopenharmony_ci  let upCompleteCallback1 = (taskStates: Array<request.TaskState>) => {
548e41f4b71Sopenharmony_ci    console.info('Upload delete complete notification.');
549e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
550e41f4b71Sopenharmony_ci      console.info('taskState:' + JSON.stringify(taskStates[i]));
551e41f4b71Sopenharmony_ci    }
552e41f4b71Sopenharmony_ci  };
553e41f4b71Sopenharmony_ci  let upCompleteCallback2 = (taskStates: Array<request.TaskState>) => {
554e41f4b71Sopenharmony_ci    console.info('Upload delete complete notification.');
555e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
556e41f4b71Sopenharmony_ci      console.info('taskState:' + JSON.stringify(taskStates[i]));
557e41f4b71Sopenharmony_ci    }
558e41f4b71Sopenharmony_ci  };
559e41f4b71Sopenharmony_ci  uploadTask.on('complete', upCompleteCallback1);
560e41f4b71Sopenharmony_ci  uploadTask.on('complete', upCompleteCallback2);
561e41f4b71Sopenharmony_ci  //表示取消headerCallback1的订阅
562e41f4b71Sopenharmony_ci  uploadTask.off('complete', upCompleteCallback1);
563e41f4b71Sopenharmony_ci  //表示取消订阅上传任务完成的所有回调
564e41f4b71Sopenharmony_ci  uploadTask.off('complete');
565e41f4b71Sopenharmony_ci
566e41f4b71Sopenharmony_ci  let upFailCallback1 = (taskStates: Array<request.TaskState>) => {
567e41f4b71Sopenharmony_ci    console.info('Upload delete fail notification.');
568e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
569e41f4b71Sopenharmony_ci      console.info('taskState:' + JSON.stringify(taskStates[i]));
570e41f4b71Sopenharmony_ci    }
571e41f4b71Sopenharmony_ci  };
572e41f4b71Sopenharmony_ci  let upFailCallback2 = (taskStates: Array<request.TaskState>) => {
573e41f4b71Sopenharmony_ci    console.info('Upload delete fail notification.');
574e41f4b71Sopenharmony_ci    for (let i = 0; i < taskStates.length; i++) {
575e41f4b71Sopenharmony_ci      console.info('taskState:' + JSON.stringify(taskStates[i]));
576e41f4b71Sopenharmony_ci    }
577e41f4b71Sopenharmony_ci  };
578e41f4b71Sopenharmony_ci  uploadTask.on('fail', upFailCallback1);
579e41f4b71Sopenharmony_ci  uploadTask.on('fail', upFailCallback2);
580e41f4b71Sopenharmony_ci  //表示取消headerCallback1的订阅
581e41f4b71Sopenharmony_ci  uploadTask.off('fail', upFailCallback1);
582e41f4b71Sopenharmony_ci  //表示取消订阅上传任务失败的所有回调
583e41f4b71Sopenharmony_ci  uploadTask.off('fail');
584e41f4b71Sopenharmony_ci  ```
585e41f4b71Sopenharmony_ci
586e41f4b71Sopenharmony_ci### delete<sup>9+</sup>
587e41f4b71Sopenharmony_cidelete(): Promise&lt;boolean&gt;
588e41f4b71Sopenharmony_ci
589e41f4b71Sopenharmony_ci移除上传的任务,异步方法,使用promise形式返回结果。
590e41f4b71Sopenharmony_ci
591e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
592e41f4b71Sopenharmony_ci
593e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ci**返回值:**
596e41f4b71Sopenharmony_ci
597e41f4b71Sopenharmony_ci  | 类型 | 说明 |
598e41f4b71Sopenharmony_ci  | -------- | -------- |
599e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用Promise方式异步回调,返回true表示移除上传任务成功;返回false表示移除上传任务失败。 |
600e41f4b71Sopenharmony_ci
601e41f4b71Sopenharmony_ci**错误码:**
602e41f4b71Sopenharmony_ci
603e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
604e41f4b71Sopenharmony_ci
605e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
606e41f4b71Sopenharmony_ci  | -------- | -------- |
607e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
608e41f4b71Sopenharmony_ci
609e41f4b71Sopenharmony_ci**示例:**
610e41f4b71Sopenharmony_ci
611e41f4b71Sopenharmony_ci<!--code_no_check-->
612e41f4b71Sopenharmony_ci  ```ts
613e41f4b71Sopenharmony_ci  uploadTask.delete().then((result: boolean) => {
614e41f4b71Sopenharmony_ci    console.info('Succeeded in deleting the upload task.');
615e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
616e41f4b71Sopenharmony_ci    console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
617e41f4b71Sopenharmony_ci  });
618e41f4b71Sopenharmony_ci  ```
619e41f4b71Sopenharmony_ci
620e41f4b71Sopenharmony_ci> **说明:**
621e41f4b71Sopenharmony_ci>
622e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
623e41f4b71Sopenharmony_ci
624e41f4b71Sopenharmony_ci
625e41f4b71Sopenharmony_ci### delete<sup>9+</sup>
626e41f4b71Sopenharmony_ci
627e41f4b71Sopenharmony_cidelete(callback: AsyncCallback&lt;boolean&gt;): void
628e41f4b71Sopenharmony_ci
629e41f4b71Sopenharmony_ci移除上传的任务,异步方法,使用callback形式返回结果。
630e41f4b71Sopenharmony_ci
631e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
632e41f4b71Sopenharmony_ci
633e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
634e41f4b71Sopenharmony_ci
635e41f4b71Sopenharmony_ci**参数:**
636e41f4b71Sopenharmony_ci
637e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
638e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
639e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示异步返回移除任务成功;返回false表示异步返回移除任务失败。 |
640e41f4b71Sopenharmony_ci
641e41f4b71Sopenharmony_ci**错误码:**
642e41f4b71Sopenharmony_ci
643e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
644e41f4b71Sopenharmony_ci
645e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
646e41f4b71Sopenharmony_ci  | -------- | -------- |
647e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
648e41f4b71Sopenharmony_ci
649e41f4b71Sopenharmony_ci**示例:**
650e41f4b71Sopenharmony_ci
651e41f4b71Sopenharmony_ci<!--code_no_check-->
652e41f4b71Sopenharmony_ci  ```ts
653e41f4b71Sopenharmony_ci  uploadTask.delete((err: BusinessError, result: boolean) => {
654e41f4b71Sopenharmony_ci    if (err) {
655e41f4b71Sopenharmony_ci      console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
656e41f4b71Sopenharmony_ci      return;
657e41f4b71Sopenharmony_ci    }
658e41f4b71Sopenharmony_ci    console.info('Succeeded in deleting the upload task.');
659e41f4b71Sopenharmony_ci  });
660e41f4b71Sopenharmony_ci  ```
661e41f4b71Sopenharmony_ci
662e41f4b71Sopenharmony_ci> **说明:**
663e41f4b71Sopenharmony_ci>
664e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
665e41f4b71Sopenharmony_ci
666e41f4b71Sopenharmony_ci
667e41f4b71Sopenharmony_ci### remove<sup>(deprecated)</sup>
668e41f4b71Sopenharmony_ci
669e41f4b71Sopenharmony_ciremove(): Promise&lt;boolean&gt;
670e41f4b71Sopenharmony_ci
671e41f4b71Sopenharmony_ci移除上传的任务,异步方法,使用promise形式返回结果。
672e41f4b71Sopenharmony_ci
673e41f4b71Sopenharmony_ci> **说明:**
674e41f4b71Sopenharmony_ci>
675e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9)替代。
676e41f4b71Sopenharmony_ci
677e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
678e41f4b71Sopenharmony_ci
679e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
680e41f4b71Sopenharmony_ci
681e41f4b71Sopenharmony_ci**返回值:**
682e41f4b71Sopenharmony_ci
683e41f4b71Sopenharmony_ci  | 类型 | 说明 |
684e41f4b71Sopenharmony_ci  | -------- | -------- |
685e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用Promise方式异步回调,返回true表示移除上传任务成功;返回false表示移除上传任务失败。 |
686e41f4b71Sopenharmony_ci
687e41f4b71Sopenharmony_ci**错误码:**
688e41f4b71Sopenharmony_ci
689e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
690e41f4b71Sopenharmony_ci
691e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
692e41f4b71Sopenharmony_ci  | -------- | -------- |
693e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
694e41f4b71Sopenharmony_ci
695e41f4b71Sopenharmony_ci**示例:**
696e41f4b71Sopenharmony_ci
697e41f4b71Sopenharmony_ci  ```js
698e41f4b71Sopenharmony_ci  uploadTask.remove().then((result) => {
699e41f4b71Sopenharmony_ci    console.info('Succeeded in removing the upload task.');
700e41f4b71Sopenharmony_ci  }).catch((err) => {
701e41f4b71Sopenharmony_ci    console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
702e41f4b71Sopenharmony_ci  });
703e41f4b71Sopenharmony_ci  ```
704e41f4b71Sopenharmony_ci
705e41f4b71Sopenharmony_ci
706e41f4b71Sopenharmony_ci### remove<sup>(deprecated)</sup>
707e41f4b71Sopenharmony_ci
708e41f4b71Sopenharmony_ciremove(callback: AsyncCallback&lt;boolean&gt;): void
709e41f4b71Sopenharmony_ci
710e41f4b71Sopenharmony_ci移除上传的任务,异步方法,使用callback形式返回结果。
711e41f4b71Sopenharmony_ci
712e41f4b71Sopenharmony_ci> **说明:**
713e41f4b71Sopenharmony_ci>
714e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-1)替代。
715e41f4b71Sopenharmony_ci
716e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
717e41f4b71Sopenharmony_ci
718e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Upload
719e41f4b71Sopenharmony_ci
720e41f4b71Sopenharmony_ci**参数:**
721e41f4b71Sopenharmony_ci
722e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
723e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
724e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示异步返回移除任务成功;返回false表示异步返回移除任务失败。 |
725e41f4b71Sopenharmony_ci
726e41f4b71Sopenharmony_ci**错误码:**
727e41f4b71Sopenharmony_ci
728e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
729e41f4b71Sopenharmony_ci
730e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
731e41f4b71Sopenharmony_ci  | -------- | -------- |
732e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
733e41f4b71Sopenharmony_ci
734e41f4b71Sopenharmony_ci**示例:**
735e41f4b71Sopenharmony_ci
736e41f4b71Sopenharmony_ci  ```js
737e41f4b71Sopenharmony_ci  uploadTask.remove((err, result) => {
738e41f4b71Sopenharmony_ci    if (err) {
739e41f4b71Sopenharmony_ci      console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
740e41f4b71Sopenharmony_ci      return;
741e41f4b71Sopenharmony_ci    }
742e41f4b71Sopenharmony_ci    if (result) {
743e41f4b71Sopenharmony_ci      console.info('Succeeded in removing the upload task.');
744e41f4b71Sopenharmony_ci    } else {
745e41f4b71Sopenharmony_ci      console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
746e41f4b71Sopenharmony_ci    }
747e41f4b71Sopenharmony_ci  });
748e41f4b71Sopenharmony_ci  ```
749e41f4b71Sopenharmony_ci
750e41f4b71Sopenharmony_ci## UploadConfig<sup>6+</sup>
751e41f4b71Sopenharmony_ci上传任务的配置信息。
752e41f4b71Sopenharmony_ci
753e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.Upload754e41f4b71Sopenharmony_ci
755e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
756e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
757e41f4b71Sopenharmony_ci| url | string | 是 | 资源地址,其最大长度为2048个字符。 |
758e41f4b71Sopenharmony_ci| header | Object | 是 | 添加要包含在上传请求中的HTTP或HTTPS标志头。 |
759e41f4b71Sopenharmony_ci| method | string | 是 |  HTTP请求方法:POST、PUT,缺省为POST。使用PUT修改资源,使用POST新增资源。 |
760e41f4b71Sopenharmony_ci| index<sup>11+</sup> | number | 否 | 任务的路径索引,默认值为0。 |
761e41f4b71Sopenharmony_ci| begins<sup>11+</sup> | number | 否 | 在上传开始时读取的文件起点。默认值为0,取值为闭区间。|
762e41f4b71Sopenharmony_ci| ends<sup>11+</sup> | number | 否 | 在上传结束时读取的文件终点。默认值为-1,取值为闭区间。 |
763e41f4b71Sopenharmony_ci| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。文件以 HTTP 的 multipart/form-data 格式提交。 |
764e41f4b71Sopenharmony_ci| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
765e41f4b71Sopenharmony_ci
766e41f4b71Sopenharmony_ci## TaskState<sup>9+</sup>
767e41f4b71Sopenharmony_ci上传任务的任务信息,是[on('complete' | 'fail')<sup>9+</sup>](#oncomplete--fail9)和[off('complete' | 'fail')<sup>9+</sup>](#offcomplete--fail9)接口的回调参数。
768e41f4b71Sopenharmony_ci
769e41f4b71Sopenharmony_ci**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload770e41f4b71Sopenharmony_ci
771e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明                                                                                                                                        |
772e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------------------------------------------------------------------------------------------------------------------------|
773e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径                                                                                                                                      |
774e41f4b71Sopenharmony_ci| responseCode | number | 是 | 上传任务返回值,0表示任务成功,其它返回码为失败,具体请查看message上传任务结果描述信息。此处推荐使用[request.agent.create<sup>10+</sup>](#requestagentcreate10-1)创建上传任务,并获取标准错误码处理异常分支。 |
775e41f4b71Sopenharmony_ci| message | string | 是 | 上传任务结果描述信息                                                                                                                                |
776e41f4b71Sopenharmony_ci
777e41f4b71Sopenharmony_ci其中,responseCode包含的返回码值如下:
778e41f4b71Sopenharmony_ci
779e41f4b71Sopenharmony_ci| 返回码 | 具体信息                               |
780e41f4b71Sopenharmony_ci|-----|------------------------------------|
781e41f4b71Sopenharmony_ci| 0   | 上传成功                               |
782e41f4b71Sopenharmony_ci| 5   | 任务被主动暂停或停止                         |
783e41f4b71Sopenharmony_ci| 6   | 任务所属应用被切换到后台或终止,导致前台任务被停止,请检查应用状态  |
784e41f4b71Sopenharmony_ci| 7   | 无网络,请检查设备是否处于联网状态                  |
785e41f4b71Sopenharmony_ci| 8   | 网络类型不匹配,请检查当前网络类型和任务所需网络类型是否匹配     |
786e41f4b71Sopenharmony_ci| 10  | 创建HTTP请求失败,请检查参数是否正确或重试任务          |
787e41f4b71Sopenharmony_ci| 12  | 超时,请检查参数是否正确、检查网络,又或是重试任务          |
788e41f4b71Sopenharmony_ci| 13  | 连接失败,请检查参数是否正确、检查网络,又或是重试任务        |
789e41f4b71Sopenharmony_ci| 14  | 请求失败,请检查参数是否正确、检查网络,又或是重试任务        |
790e41f4b71Sopenharmony_ci| 15  | 上传失败,请检查参数是否正确、检查网络,又或是重试任务        |
791e41f4b71Sopenharmony_ci| 16  | 重定向失败,请检查参数是否正确、检查网络,又或是重试任务       |
792e41f4b71Sopenharmony_ci| 17  | 协议错误,服务器返回 4XX 或 5XX 状态码,请检查参数是否正确 |
793e41f4b71Sopenharmony_ci| 20  | 其他错误,请检查参数是否正确、检查网络,又或是重试任务        |
794e41f4b71Sopenharmony_ci
795e41f4b71Sopenharmony_ci## File
796e41f4b71Sopenharmony_ci[UploadConfig<sup>6+<sup>](#uploadconfig6)中的文件列表。
797e41f4b71Sopenharmony_ci
798e41f4b71Sopenharmony_ci**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download799e41f4b71Sopenharmony_ci
800e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
801e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
802e41f4b71Sopenharmony_ci| filename | string | 是 | multipart提交时,请求头中的文件名。 |
803e41f4b71Sopenharmony_ci| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
804e41f4b71Sopenharmony_ci| uri | string | 是 | 文件的本地存储路径。<br/>仅支持"internal"协议类型,仅支持"internal://cache/",即调用方(即传入的context)对应的缓存路径context.cacheDir。<br/>示例:internal://cache/path/to/file.txt |
805e41f4b71Sopenharmony_ci| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
806e41f4b71Sopenharmony_ci
807e41f4b71Sopenharmony_ci
808e41f4b71Sopenharmony_ci## RequestData
809e41f4b71Sopenharmony_ci[UploadConfig<sup>6+<sup>](#uploadconfig6)中的表单数据。
810e41f4b71Sopenharmony_ci
811e41f4b71Sopenharmony_ci**系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.Download812e41f4b71Sopenharmony_ci
813e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
814e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
815e41f4b71Sopenharmony_ci| name | string | 是 | 表示表单元素的名称。 |
816e41f4b71Sopenharmony_ci| value | string | 是 | 表示表单元素的值。 |
817e41f4b71Sopenharmony_ci
818e41f4b71Sopenharmony_ci## request.downloadFile<sup>9+</sup>
819e41f4b71Sopenharmony_ci
820e41f4b71Sopenharmony_cidownloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
821e41f4b71Sopenharmony_ci
822e41f4b71Sopenharmony_ci下载,异步方法,使用promise形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
823e41f4b71Sopenharmony_ci
824e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
825e41f4b71Sopenharmony_ci
826e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
827e41f4b71Sopenharmony_ci
828e41f4b71Sopenharmony_ci**参数:**
829e41f4b71Sopenharmony_ci
830e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
831e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
832e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
833e41f4b71Sopenharmony_ci  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
834e41f4b71Sopenharmony_ci
835e41f4b71Sopenharmony_ci**返回值:**
836e41f4b71Sopenharmony_ci
837e41f4b71Sopenharmony_ci  | 类型 | 说明 |
838e41f4b71Sopenharmony_ci  | -------- | -------- |
839e41f4b71Sopenharmony_ci  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 使用Promise方式,异步返回下载任务DownloadTask的Promise对象。 |
840e41f4b71Sopenharmony_ci
841e41f4b71Sopenharmony_ci**错误码:**
842e41f4b71Sopenharmony_ci
843e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。。
844e41f4b71Sopenharmony_ci
845e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
846e41f4b71Sopenharmony_ci  | -------- | -------- |
847e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
848e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
849e41f4b71Sopenharmony_ci  | 13400001 | file operation error. |
850e41f4b71Sopenharmony_ci  | 13400002 | bad file path. |
851e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
852e41f4b71Sopenharmony_ci
853e41f4b71Sopenharmony_ci**示例:**
854e41f4b71Sopenharmony_ci
855e41f4b71Sopenharmony_ci  ```ts
856e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
857e41f4b71Sopenharmony_ci
858e41f4b71Sopenharmony_ci  try {
859e41f4b71Sopenharmony_ci    // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
860e41f4b71Sopenharmony_ci    request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
861e41f4b71Sopenharmony_ci       let downloadTask: request.DownloadTask = data;
862e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
863e41f4b71Sopenharmony_ci      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
864e41f4b71Sopenharmony_ci    })
865e41f4b71Sopenharmony_ci  } catch (err) {
866e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
867e41f4b71Sopenharmony_ci  }
868e41f4b71Sopenharmony_ci  ```
869e41f4b71Sopenharmony_ci
870e41f4b71Sopenharmony_ci> **说明:**
871e41f4b71Sopenharmony_ci>
872e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
873e41f4b71Sopenharmony_ci
874e41f4b71Sopenharmony_ci
875e41f4b71Sopenharmony_ci## request.downloadFile<sup>9+</sup>
876e41f4b71Sopenharmony_ci
877e41f4b71Sopenharmony_cidownloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
878e41f4b71Sopenharmony_ci
879e41f4b71Sopenharmony_ci下载,异步方法,使用callback形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
880e41f4b71Sopenharmony_ci
881e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
882e41f4b71Sopenharmony_ci
883e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
884e41f4b71Sopenharmony_ci
885e41f4b71Sopenharmony_ci**参数:**
886e41f4b71Sopenharmony_ci
887e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
888e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
889e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
890e41f4b71Sopenharmony_ci  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
891e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 回调函数。当下载任务成功,err为undefined,data为获取到的DownloadTask对象;否则为错误对象。 |
892e41f4b71Sopenharmony_ci
893e41f4b71Sopenharmony_ci**错误码:**
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。。
896e41f4b71Sopenharmony_ci
897e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
898e41f4b71Sopenharmony_ci  | -------- | -------- |
899e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
900e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
901e41f4b71Sopenharmony_ci  | 13400001 | file operation error. |
902e41f4b71Sopenharmony_ci  | 13400002 | bad file path. |
903e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ci**示例:**
906e41f4b71Sopenharmony_ci
907e41f4b71Sopenharmony_ci  ```ts
908e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
909e41f4b71Sopenharmony_ci
910e41f4b71Sopenharmony_ci  try {
911e41f4b71Sopenharmony_ci    // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
912e41f4b71Sopenharmony_ci    request.downloadFile(getContext(), {
913e41f4b71Sopenharmony_ci      url: 'https://xxxx/xxxxx.hap',
914e41f4b71Sopenharmony_ci      filePath: 'xxx/xxxxx.hap'
915e41f4b71Sopenharmony_ci    }, (err: BusinessError, data: request.DownloadTask) => {
916e41f4b71Sopenharmony_ci      if (err) {
917e41f4b71Sopenharmony_ci        console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
918e41f4b71Sopenharmony_ci        return;
919e41f4b71Sopenharmony_ci      }
920e41f4b71Sopenharmony_ci      let downloadTask: request.DownloadTask = data;
921e41f4b71Sopenharmony_ci    });
922e41f4b71Sopenharmony_ci  } catch (err) {
923e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
924e41f4b71Sopenharmony_ci  }
925e41f4b71Sopenharmony_ci  ```
926e41f4b71Sopenharmony_ci
927e41f4b71Sopenharmony_ci> **说明:**
928e41f4b71Sopenharmony_ci>
929e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
930e41f4b71Sopenharmony_ci
931e41f4b71Sopenharmony_ci## request.download<sup>(deprecated)</sup>
932e41f4b71Sopenharmony_ci
933e41f4b71Sopenharmony_cidownload(config: DownloadConfig): Promise&lt;DownloadTask&gt;
934e41f4b71Sopenharmony_ci
935e41f4b71Sopenharmony_ci下载,异步方法,使用promise形式返回结果。
936e41f4b71Sopenharmony_ci
937e41f4b71Sopenharmony_ci> **说明:**
938e41f4b71Sopenharmony_ci>
939e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)替代。
940e41f4b71Sopenharmony_ci
941e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在FA模型下使用
942e41f4b71Sopenharmony_ci
943e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
944e41f4b71Sopenharmony_ci
945e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
946e41f4b71Sopenharmony_ci
947e41f4b71Sopenharmony_ci**参数:**
948e41f4b71Sopenharmony_ci
949e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
950e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
951e41f4b71Sopenharmony_ci  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
952e41f4b71Sopenharmony_ci
953e41f4b71Sopenharmony_ci**返回值:**
954e41f4b71Sopenharmony_ci
955e41f4b71Sopenharmony_ci  | 类型 | 说明 |
956e41f4b71Sopenharmony_ci  | -------- | -------- |
957e41f4b71Sopenharmony_ci  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 使用Promise方式,异步返回下载任务DownloadTask的Promise对象。 |
958e41f4b71Sopenharmony_ci
959e41f4b71Sopenharmony_ci**错误码:**
960e41f4b71Sopenharmony_ci
961e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
962e41f4b71Sopenharmony_ci
963e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
964e41f4b71Sopenharmony_ci  | -------- | -------- |
965e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
966e41f4b71Sopenharmony_ci
967e41f4b71Sopenharmony_ci**示例:**
968e41f4b71Sopenharmony_ci
969e41f4b71Sopenharmony_ci  ```js
970e41f4b71Sopenharmony_ci  let downloadTask;
971e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
972e41f4b71Sopenharmony_ci  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
973e41f4b71Sopenharmony_ci    downloadTask = data;
974e41f4b71Sopenharmony_ci  }).catch((err) => {
975e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
976e41f4b71Sopenharmony_ci  })
977e41f4b71Sopenharmony_ci  ```
978e41f4b71Sopenharmony_ci
979e41f4b71Sopenharmony_ci
980e41f4b71Sopenharmony_ci## request.download<sup>(deprecated)</sup>
981e41f4b71Sopenharmony_ci
982e41f4b71Sopenharmony_cidownload(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
983e41f4b71Sopenharmony_ci
984e41f4b71Sopenharmony_ci下载,异步方法,使用callback形式返回结果。
985e41f4b71Sopenharmony_ci
986e41f4b71Sopenharmony_ci> **说明:**
987e41f4b71Sopenharmony_ci>
988e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)替代。
989e41f4b71Sopenharmony_ci
990e41f4b71Sopenharmony_ci**模型约束**:此接口仅可在FA模型下使用
991e41f4b71Sopenharmony_ci
992e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
993e41f4b71Sopenharmony_ci
994e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
995e41f4b71Sopenharmony_ci
996e41f4b71Sopenharmony_ci**参数:**
997e41f4b71Sopenharmony_ci
998e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
999e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1000e41f4b71Sopenharmony_ci  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
1001e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 回调函数。当下载任务成功,err为undefined,data为获取到的DownloadTask对象;否则为错误对象。 |
1002e41f4b71Sopenharmony_ci
1003e41f4b71Sopenharmony_ci**错误码:**
1004e41f4b71Sopenharmony_ci
1005e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
1006e41f4b71Sopenharmony_ci
1007e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
1008e41f4b71Sopenharmony_ci  | -------- | -------- |
1009e41f4b71Sopenharmony_ci| 201 | the permissions check fails |
1010e41f4b71Sopenharmony_ci
1011e41f4b71Sopenharmony_ci**示例:**
1012e41f4b71Sopenharmony_ci
1013e41f4b71Sopenharmony_ci  ```js
1014e41f4b71Sopenharmony_ci  let downloadTask;
1015e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1016e41f4b71Sopenharmony_ci  request.download({ url: 'https://xxxx/xxxxx.hap', 
1017e41f4b71Sopenharmony_ci  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
1018e41f4b71Sopenharmony_ci    if (err) {
1019e41f4b71Sopenharmony_ci      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1020e41f4b71Sopenharmony_ci      return;
1021e41f4b71Sopenharmony_ci    }
1022e41f4b71Sopenharmony_ci    downloadTask = data;
1023e41f4b71Sopenharmony_ci  });
1024e41f4b71Sopenharmony_ci  ```
1025e41f4b71Sopenharmony_ci
1026e41f4b71Sopenharmony_ci## DownloadTask
1027e41f4b71Sopenharmony_ci
1028e41f4b71Sopenharmony_ci下载任务,使用下列方法前,需要先获取DownloadTask对象,promise形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)获取,callback形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)获取。
1029e41f4b71Sopenharmony_ci
1030e41f4b71Sopenharmony_ci
1031e41f4b71Sopenharmony_ci### on('progress')
1032e41f4b71Sopenharmony_ci
1033e41f4b71Sopenharmony_cion(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
1034e41f4b71Sopenharmony_ci
1035e41f4b71Sopenharmony_ci订阅下载任务进度事件,异步方法,使用callback形式返回结果。
1036e41f4b71Sopenharmony_ci
1037e41f4b71Sopenharmony_ci> **说明:**
1038e41f4b71Sopenharmony_ci>
1039e41f4b71Sopenharmony_ci> 当应用处于后台时,为满足功耗性能要求,不支持调用此接口进行回调。
1040e41f4b71Sopenharmony_ci
1041e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1042e41f4b71Sopenharmony_ci
1043e41f4b71Sopenharmony_ci**参数:**
1044e41f4b71Sopenharmony_ci
1045e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1046e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1047e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
1048e41f4b71Sopenharmony_ci  | callback | function | 是 | 下载任务进度的回调函数,返回已上传文件大小和上传文件总大小。 |
1049e41f4b71Sopenharmony_ci
1050e41f4b71Sopenharmony_ci  回调函数的参数:
1051e41f4b71Sopenharmony_ci
1052e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明                                                                      |
1053e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------------------------------------------------------|
1054e41f4b71Sopenharmony_ci| receivedSize | number | 是 | 当前下载的进度,单位为字节。                                                           |
1055e41f4b71Sopenharmony_ci| totalSize | number | 是 | 下载文件的总大小,单位为字节。在下载过程中,若服务器使用 chunk 方式传输导致无法从请求头中获取文件总大小时,totalSize 为 -1。 |
1056e41f4b71Sopenharmony_ci
1057e41f4b71Sopenharmony_ci**错误码:**
1058e41f4b71Sopenharmony_ci
1059e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1060e41f4b71Sopenharmony_ci
1061e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1062e41f4b71Sopenharmony_ci  | -------- | -------- |
1063e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1064e41f4b71Sopenharmony_ci
1065e41f4b71Sopenharmony_ci**示例:**
1066e41f4b71Sopenharmony_ci
1067e41f4b71Sopenharmony_ci  ```ts
1068e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1069e41f4b71Sopenharmony_ci
1070e41f4b71Sopenharmony_ci  try {
1071e41f4b71Sopenharmony_ci    // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1072e41f4b71Sopenharmony_ci    request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1073e41f4b71Sopenharmony_ci      let downloadTask: request.DownloadTask = data;
1074e41f4b71Sopenharmony_ci      let progressCallback = (receivedSize: number, totalSize: number) => {
1075e41f4b71Sopenharmony_ci        console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
1076e41f4b71Sopenharmony_ci      };
1077e41f4b71Sopenharmony_ci      downloadTask.on('progress', progressCallback);
1078e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1079e41f4b71Sopenharmony_ci      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1080e41f4b71Sopenharmony_ci    })
1081e41f4b71Sopenharmony_ci  } catch (err) {
1082e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1083e41f4b71Sopenharmony_ci  }
1084e41f4b71Sopenharmony_ci  ```
1085e41f4b71Sopenharmony_ci
1086e41f4b71Sopenharmony_ci
1087e41f4b71Sopenharmony_ci### off('progress')
1088e41f4b71Sopenharmony_ci
1089e41f4b71Sopenharmony_cioff(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
1090e41f4b71Sopenharmony_ci
1091e41f4b71Sopenharmony_ci取消订阅下载任务进度事件。
1092e41f4b71Sopenharmony_ci
1093e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1094e41f4b71Sopenharmony_ci
1095e41f4b71Sopenharmony_ci**参数:**
1096e41f4b71Sopenharmony_ci
1097e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1098e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1099e41f4b71Sopenharmony_ci  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
1100e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
1101e41f4b71Sopenharmony_ci  
1102e41f4b71Sopenharmony_ci  回调函数的参数:
1103e41f4b71Sopenharmony_ci
1104e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明                                                                      |
1105e41f4b71Sopenharmony_ci| -------- | -------- | -------- |-------------------------------------------------------------------------|
1106e41f4b71Sopenharmony_ci| receivedSize | number | 是 | 当前下载的进度,单位为字节。                                                           |
1107e41f4b71Sopenharmony_ci| totalSize | number | 是 | 下载文件的总大小,单位为字节。在下载过程中,若服务器使用 chunk 方式传输导致无法从请求头中获取文件总大小时,totalSize 为 -1。 |
1108e41f4b71Sopenharmony_ci
1109e41f4b71Sopenharmony_ci**错误码:**
1110e41f4b71Sopenharmony_ci
1111e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1112e41f4b71Sopenharmony_ci
1113e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1114e41f4b71Sopenharmony_ci  | -------- | -------- |
1115e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1116e41f4b71Sopenharmony_ci
1117e41f4b71Sopenharmony_ci**示例:**
1118e41f4b71Sopenharmony_ci
1119e41f4b71Sopenharmony_ci  ```ts
1120e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1121e41f4b71Sopenharmony_ci
1122e41f4b71Sopenharmony_citry {
1123e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1124e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1125e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1126e41f4b71Sopenharmony_ci    let progressCallback1 = (receivedSize: number, totalSize: number) => {
1127e41f4b71Sopenharmony_ci      console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
1128e41f4b71Sopenharmony_ci    };
1129e41f4b71Sopenharmony_ci    let progressCallback2 = (receivedSize: number, totalSize: number) => {
1130e41f4b71Sopenharmony_ci      console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
1131e41f4b71Sopenharmony_ci    };
1132e41f4b71Sopenharmony_ci    downloadTask.on('progress', progressCallback1);
1133e41f4b71Sopenharmony_ci    downloadTask.on('progress', progressCallback2);
1134e41f4b71Sopenharmony_ci    //表示取消progressCallback1的订阅
1135e41f4b71Sopenharmony_ci    downloadTask.off('progress', progressCallback1);
1136e41f4b71Sopenharmony_ci    //表示取消订阅下载任务进度事件的所有回调
1137e41f4b71Sopenharmony_ci    downloadTask.off('progress');
1138e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1139e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1140e41f4b71Sopenharmony_ci  })
1141e41f4b71Sopenharmony_ci} catch (err) {
1142e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1143e41f4b71Sopenharmony_ci}
1144e41f4b71Sopenharmony_ci  ```
1145e41f4b71Sopenharmony_ci
1146e41f4b71Sopenharmony_ci
1147e41f4b71Sopenharmony_ci### on('complete'|'pause'|'remove')<sup>7+</sup>
1148e41f4b71Sopenharmony_ci
1149e41f4b71Sopenharmony_cion(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void
1150e41f4b71Sopenharmony_ci
1151e41f4b71Sopenharmony_ci订阅下载任务相关的事件,异步方法,使用callback形式返回。
1152e41f4b71Sopenharmony_ci
1153e41f4b71Sopenharmony_ci**系统能力**: SystemCapability.MiscServices.Download
1154e41f4b71Sopenharmony_ci
1155e41f4b71Sopenharmony_ci**参数:**
1156e41f4b71Sopenharmony_ci
1157e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1158e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1159e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型。<br>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
1160e41f4b71Sopenharmony_ci  | callback | function | 是 | 下载任务相关的回调函数。|
1161e41f4b71Sopenharmony_ci
1162e41f4b71Sopenharmony_ci**错误码:**
1163e41f4b71Sopenharmony_ci
1164e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1165e41f4b71Sopenharmony_ci
1166e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1167e41f4b71Sopenharmony_ci  | -------- | -------- |
1168e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1169e41f4b71Sopenharmony_ci
1170e41f4b71Sopenharmony_ci**示例:**
1171e41f4b71Sopenharmony_ci
1172e41f4b71Sopenharmony_ci  ```ts
1173e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1174e41f4b71Sopenharmony_ci
1175e41f4b71Sopenharmony_citry {
1176e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1177e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1178e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1179e41f4b71Sopenharmony_ci    let completeCallback = () => {
1180e41f4b71Sopenharmony_ci      console.info('Download task completed.');
1181e41f4b71Sopenharmony_ci    };
1182e41f4b71Sopenharmony_ci    downloadTask.on('complete', completeCallback);
1183e41f4b71Sopenharmony_ci
1184e41f4b71Sopenharmony_ci    let pauseCallback = () => {
1185e41f4b71Sopenharmony_ci      console.info('Download task pause.');
1186e41f4b71Sopenharmony_ci    };
1187e41f4b71Sopenharmony_ci    downloadTask.on('pause', pauseCallback);
1188e41f4b71Sopenharmony_ci
1189e41f4b71Sopenharmony_ci    let removeCallback = () => {
1190e41f4b71Sopenharmony_ci      console.info('Download task remove.');
1191e41f4b71Sopenharmony_ci    };
1192e41f4b71Sopenharmony_ci    downloadTask.on('remove', removeCallback);
1193e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1194e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1195e41f4b71Sopenharmony_ci  })
1196e41f4b71Sopenharmony_ci} catch (err) {
1197e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1198e41f4b71Sopenharmony_ci}
1199e41f4b71Sopenharmony_ci  ```
1200e41f4b71Sopenharmony_ci
1201e41f4b71Sopenharmony_ci
1202e41f4b71Sopenharmony_ci### off('complete'|'pause'|'remove')<sup>7+</sup>
1203e41f4b71Sopenharmony_ci
1204e41f4b71Sopenharmony_cioff(type: 'complete'|'pause'|'remove', callback?: () =&gt; void): void
1205e41f4b71Sopenharmony_ci
1206e41f4b71Sopenharmony_ci取消订阅下载任务相关的事件。
1207e41f4b71Sopenharmony_ci
1208e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1209e41f4b71Sopenharmony_ci
1210e41f4b71Sopenharmony_ci**参数:**
1211e41f4b71Sopenharmony_ci
1212e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1213e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1214e41f4b71Sopenharmony_ci  | type | string | 是 | 取消订阅的事件类型。<br/>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
1215e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
1216e41f4b71Sopenharmony_ci
1217e41f4b71Sopenharmony_ci**错误码:**
1218e41f4b71Sopenharmony_ci
1219e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1220e41f4b71Sopenharmony_ci
1221e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1222e41f4b71Sopenharmony_ci  | -------- | -------- |
1223e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1224e41f4b71Sopenharmony_ci
1225e41f4b71Sopenharmony_ci**示例:**
1226e41f4b71Sopenharmony_ci
1227e41f4b71Sopenharmony_ci  ```ts
1228e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1229e41f4b71Sopenharmony_ci
1230e41f4b71Sopenharmony_citry {
1231e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1232e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1233e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1234e41f4b71Sopenharmony_ci    let completeCallback1 = () => {
1235e41f4b71Sopenharmony_ci      console.info('Download delete complete notification.');
1236e41f4b71Sopenharmony_ci    };
1237e41f4b71Sopenharmony_ci    let completeCallback2 = () => {
1238e41f4b71Sopenharmony_ci      console.info('Download delete complete notification.');
1239e41f4b71Sopenharmony_ci    };
1240e41f4b71Sopenharmony_ci    downloadTask.on('complete', completeCallback1);
1241e41f4b71Sopenharmony_ci    downloadTask.on('complete', completeCallback2);
1242e41f4b71Sopenharmony_ci    //表示取消completeCallback1的订阅
1243e41f4b71Sopenharmony_ci    downloadTask.off('complete', completeCallback1);
1244e41f4b71Sopenharmony_ci    //表示取消订阅下载任务完成的所有回调
1245e41f4b71Sopenharmony_ci    downloadTask.off('complete');
1246e41f4b71Sopenharmony_ci
1247e41f4b71Sopenharmony_ci    let pauseCallback1 = () => {
1248e41f4b71Sopenharmony_ci      console.info('Download delete pause notification.');
1249e41f4b71Sopenharmony_ci    };
1250e41f4b71Sopenharmony_ci    let pauseCallback2 = () => {
1251e41f4b71Sopenharmony_ci      console.info('Download delete pause notification.');
1252e41f4b71Sopenharmony_ci    };
1253e41f4b71Sopenharmony_ci    downloadTask.on('pause', pauseCallback1);
1254e41f4b71Sopenharmony_ci    downloadTask.on('pause', pauseCallback2);
1255e41f4b71Sopenharmony_ci    //表示取消pauseCallback1的订阅
1256e41f4b71Sopenharmony_ci    downloadTask.off('pause', pauseCallback1);
1257e41f4b71Sopenharmony_ci    //表示取消订阅下载任务暂停的所有回调
1258e41f4b71Sopenharmony_ci    downloadTask.off('pause');
1259e41f4b71Sopenharmony_ci
1260e41f4b71Sopenharmony_ci    let removeCallback1 = () => {
1261e41f4b71Sopenharmony_ci      console.info('Download delete remove notification.');
1262e41f4b71Sopenharmony_ci    };
1263e41f4b71Sopenharmony_ci    let removeCallback2 = () => {
1264e41f4b71Sopenharmony_ci      console.info('Download delete remove notification.');
1265e41f4b71Sopenharmony_ci    };
1266e41f4b71Sopenharmony_ci    downloadTask.on('remove', removeCallback1);
1267e41f4b71Sopenharmony_ci    downloadTask.on('remove', removeCallback2);
1268e41f4b71Sopenharmony_ci    //表示取消removeCallback1的订阅
1269e41f4b71Sopenharmony_ci    downloadTask.off('remove', removeCallback1);
1270e41f4b71Sopenharmony_ci    //表示取消订阅下载任务移除的所有回调
1271e41f4b71Sopenharmony_ci    downloadTask.off('remove');
1272e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1273e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1274e41f4b71Sopenharmony_ci  })
1275e41f4b71Sopenharmony_ci} catch (err) {
1276e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1277e41f4b71Sopenharmony_ci}
1278e41f4b71Sopenharmony_ci  
1279e41f4b71Sopenharmony_ci  ```
1280e41f4b71Sopenharmony_ci
1281e41f4b71Sopenharmony_ci
1282e41f4b71Sopenharmony_ci### on('fail')<sup>7+</sup>
1283e41f4b71Sopenharmony_ci
1284e41f4b71Sopenharmony_cion(type: 'fail', callback: (err: number) =&gt; void): void
1285e41f4b71Sopenharmony_ci
1286e41f4b71Sopenharmony_ci订阅下载任务失败事件,异步方法,使用callback形式返回结果。
1287e41f4b71Sopenharmony_ci
1288e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1289e41f4b71Sopenharmony_ci
1290e41f4b71Sopenharmony_ci**参数:**
1291e41f4b71Sopenharmony_ci
1292e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1293e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1294e41f4b71Sopenharmony_ci  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
1295e41f4b71Sopenharmony_ci  | callback | function | 是 | 下载失败的回调函数。 |
1296e41f4b71Sopenharmony_ci
1297e41f4b71Sopenharmony_ci  回调函数的参数:
1298e41f4b71Sopenharmony_ci
1299e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 |
1300e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
1301e41f4b71Sopenharmony_ci| err | number | 是 | 下载失败的错误码,错误原因见[下载任务的错误码](#下载任务的错误码)。 |
1302e41f4b71Sopenharmony_ci
1303e41f4b71Sopenharmony_ci**错误码:**
1304e41f4b71Sopenharmony_ci
1305e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1306e41f4b71Sopenharmony_ci
1307e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1308e41f4b71Sopenharmony_ci  | -------- | -------- |
1309e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1310e41f4b71Sopenharmony_ci
1311e41f4b71Sopenharmony_ci**示例:**
1312e41f4b71Sopenharmony_ci
1313e41f4b71Sopenharmony_ci  ```ts
1314e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1315e41f4b71Sopenharmony_ci
1316e41f4b71Sopenharmony_citry {
1317e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1318e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1319e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1320e41f4b71Sopenharmony_ci    let failCallback = (err: number) => {
1321e41f4b71Sopenharmony_ci      console.error(`Failed to download the task. Code: ${err}`);
1322e41f4b71Sopenharmony_ci    };
1323e41f4b71Sopenharmony_ci    downloadTask.on('fail', failCallback);
1324e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1325e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1326e41f4b71Sopenharmony_ci  })
1327e41f4b71Sopenharmony_ci} catch (err) {
1328e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1329e41f4b71Sopenharmony_ci}
1330e41f4b71Sopenharmony_ci  ```
1331e41f4b71Sopenharmony_ci
1332e41f4b71Sopenharmony_ci
1333e41f4b71Sopenharmony_ci### off('fail')<sup>7+</sup>
1334e41f4b71Sopenharmony_ci
1335e41f4b71Sopenharmony_cioff(type: 'fail', callback?: (err: number) =&gt; void): void
1336e41f4b71Sopenharmony_ci
1337e41f4b71Sopenharmony_ci取消订阅下载任务失败事件。
1338e41f4b71Sopenharmony_ci
1339e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1340e41f4b71Sopenharmony_ci
1341e41f4b71Sopenharmony_ci**参数:**
1342e41f4b71Sopenharmony_ci
1343e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1344e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1345e41f4b71Sopenharmony_ci  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
1346e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
1347e41f4b71Sopenharmony_ci
1348e41f4b71Sopenharmony_ci**错误码:**
1349e41f4b71Sopenharmony_ci
1350e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1351e41f4b71Sopenharmony_ci
1352e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1353e41f4b71Sopenharmony_ci  | -------- | -------- |
1354e41f4b71Sopenharmony_ci  | 401 | the parameters check fails.Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
1355e41f4b71Sopenharmony_ci
1356e41f4b71Sopenharmony_ci**示例:**
1357e41f4b71Sopenharmony_ci
1358e41f4b71Sopenharmony_ci  ```ts
1359e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1360e41f4b71Sopenharmony_ci
1361e41f4b71Sopenharmony_citry {
1362e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1363e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1364e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1365e41f4b71Sopenharmony_ci    let failCallback1 = (err: number) => {
1366e41f4b71Sopenharmony_ci      console.error(`Failed to download the task. Code: ${err}`);
1367e41f4b71Sopenharmony_ci    };
1368e41f4b71Sopenharmony_ci    let failCallback2 = (err: number) => {
1369e41f4b71Sopenharmony_ci      console.error(`Failed to download the task. Code: ${err}`);
1370e41f4b71Sopenharmony_ci    };
1371e41f4b71Sopenharmony_ci    downloadTask.on('fail', failCallback1);
1372e41f4b71Sopenharmony_ci    downloadTask.on('fail', failCallback2);
1373e41f4b71Sopenharmony_ci    //表示取消failCallback1的订阅
1374e41f4b71Sopenharmony_ci    downloadTask.off('fail', failCallback1);
1375e41f4b71Sopenharmony_ci    //表示取消订阅下载任务失败的所有回调
1376e41f4b71Sopenharmony_ci    downloadTask.off('fail');
1377e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1378e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1379e41f4b71Sopenharmony_ci  })
1380e41f4b71Sopenharmony_ci} catch (err) {
1381e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1382e41f4b71Sopenharmony_ci}
1383e41f4b71Sopenharmony_ci  ```
1384e41f4b71Sopenharmony_ci
1385e41f4b71Sopenharmony_ci### delete<sup>9+</sup>
1386e41f4b71Sopenharmony_ci
1387e41f4b71Sopenharmony_cidelete(): Promise&lt;boolean&gt;
1388e41f4b71Sopenharmony_ci
1389e41f4b71Sopenharmony_ci移除下载的任务,异步方法,使用promise形式返回结果。
1390e41f4b71Sopenharmony_ci
1391e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1392e41f4b71Sopenharmony_ci
1393e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1394e41f4b71Sopenharmony_ci
1395e41f4b71Sopenharmony_ci**返回值:**
1396e41f4b71Sopenharmony_ci
1397e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1398e41f4b71Sopenharmony_ci  | -------- | -------- |
1399e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用promise方式异步回调,返回true表示移除下载任务成功;返回false表示移除下载任务失败。 |
1400e41f4b71Sopenharmony_ci
1401e41f4b71Sopenharmony_ci**错误码:**
1402e41f4b71Sopenharmony_ci
1403e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1404e41f4b71Sopenharmony_ci
1405e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1406e41f4b71Sopenharmony_ci  | -------- | -------- |
1407e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1408e41f4b71Sopenharmony_ci
1409e41f4b71Sopenharmony_ci**示例:**
1410e41f4b71Sopenharmony_ci
1411e41f4b71Sopenharmony_ci  ```ts
1412e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1413e41f4b71Sopenharmony_ci
1414e41f4b71Sopenharmony_citry {
1415e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1416e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1417e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1418e41f4b71Sopenharmony_ci    downloadTask.delete().then((result: boolean) => {
1419e41f4b71Sopenharmony_ci      console.info('Succeeded in removing the download task.');
1420e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1421e41f4b71Sopenharmony_ci      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1422e41f4b71Sopenharmony_ci    });
1423e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1424e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1425e41f4b71Sopenharmony_ci  })
1426e41f4b71Sopenharmony_ci} catch (err) {
1427e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1428e41f4b71Sopenharmony_ci}
1429e41f4b71Sopenharmony_ci  ```
1430e41f4b71Sopenharmony_ci
1431e41f4b71Sopenharmony_ci> **说明:**
1432e41f4b71Sopenharmony_ci>
1433e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1434e41f4b71Sopenharmony_ci
1435e41f4b71Sopenharmony_ci
1436e41f4b71Sopenharmony_ci### delete<sup>9+</sup>
1437e41f4b71Sopenharmony_ci
1438e41f4b71Sopenharmony_cidelete(callback: AsyncCallback&lt;boolean&gt;): void
1439e41f4b71Sopenharmony_ci
1440e41f4b71Sopenharmony_ci移除下载的任务,异步方法,使用callback形式返回结果。
1441e41f4b71Sopenharmony_ci
1442e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1443e41f4b71Sopenharmony_ci
1444e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1445e41f4b71Sopenharmony_ci
1446e41f4b71Sopenharmony_ci**参数:**
1447e41f4b71Sopenharmony_ci
1448e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1449e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1450e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示异步返回移除任务是否成功;返回false表示异步返回移除任务失败。 |
1451e41f4b71Sopenharmony_ci
1452e41f4b71Sopenharmony_ci**错误码:**
1453e41f4b71Sopenharmony_ci
1454e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1455e41f4b71Sopenharmony_ci
1456e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1457e41f4b71Sopenharmony_ci  | -------- | -------- |
1458e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1459e41f4b71Sopenharmony_ci
1460e41f4b71Sopenharmony_ci**示例:**
1461e41f4b71Sopenharmony_ci
1462e41f4b71Sopenharmony_ci  ```ts
1463e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1464e41f4b71Sopenharmony_ci
1465e41f4b71Sopenharmony_citry {
1466e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1467e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1468e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1469e41f4b71Sopenharmony_ci    downloadTask.delete((err: BusinessError, result: boolean) => {
1470e41f4b71Sopenharmony_ci      if (err) {
1471e41f4b71Sopenharmony_ci        console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1472e41f4b71Sopenharmony_ci        return;
1473e41f4b71Sopenharmony_ci      }
1474e41f4b71Sopenharmony_ci      console.info('Succeeded in removing the download task.');
1475e41f4b71Sopenharmony_ci    });
1476e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1477e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1478e41f4b71Sopenharmony_ci  })
1479e41f4b71Sopenharmony_ci} catch (err) {
1480e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1481e41f4b71Sopenharmony_ci}
1482e41f4b71Sopenharmony_ci  ```
1483e41f4b71Sopenharmony_ci
1484e41f4b71Sopenharmony_ci> **说明:**
1485e41f4b71Sopenharmony_ci>
1486e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1487e41f4b71Sopenharmony_ci
1488e41f4b71Sopenharmony_ci
1489e41f4b71Sopenharmony_ci### getTaskInfo<sup>9+</sup>
1490e41f4b71Sopenharmony_ci
1491e41f4b71Sopenharmony_cigetTaskInfo(): Promise&lt;DownloadInfo&gt;
1492e41f4b71Sopenharmony_ci
1493e41f4b71Sopenharmony_ci查询下载任务的信息,异步方法,使用promise形式返回DownloadInfo里的信息。
1494e41f4b71Sopenharmony_ci
1495e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1496e41f4b71Sopenharmony_ci
1497e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1498e41f4b71Sopenharmony_ci
1499e41f4b71Sopenharmony_ci**返回值:**
1500e41f4b71Sopenharmony_ci
1501e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1502e41f4b71Sopenharmony_ci  | -------- | -------- |
1503e41f4b71Sopenharmony_ci  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; |  使用promise方式,异步返回下载任务信息DownloadInfo的Promise对象。 |
1504e41f4b71Sopenharmony_ci
1505e41f4b71Sopenharmony_ci**错误码:**
1506e41f4b71Sopenharmony_ci
1507e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1508e41f4b71Sopenharmony_ci
1509e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1510e41f4b71Sopenharmony_ci  | -------- | -------- |
1511e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1512e41f4b71Sopenharmony_ci
1513e41f4b71Sopenharmony_ci**示例:**
1514e41f4b71Sopenharmony_ci
1515e41f4b71Sopenharmony_ci  ```ts
1516e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1517e41f4b71Sopenharmony_ci
1518e41f4b71Sopenharmony_citry {
1519e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1520e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1521e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1522e41f4b71Sopenharmony_ci    downloadTask.getTaskInfo().then((downloadInfo: request.DownloadInfo) => {
1523e41f4b71Sopenharmony_ci      console.info('Succeeded in querying the download task')
1524e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1525e41f4b71Sopenharmony_ci      console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
1526e41f4b71Sopenharmony_ci    });
1527e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1528e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1529e41f4b71Sopenharmony_ci  })
1530e41f4b71Sopenharmony_ci} catch (err) {
1531e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1532e41f4b71Sopenharmony_ci} 
1533e41f4b71Sopenharmony_ci  ```
1534e41f4b71Sopenharmony_ci
1535e41f4b71Sopenharmony_ci> **说明:**
1536e41f4b71Sopenharmony_ci>
1537e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1538e41f4b71Sopenharmony_ci
1539e41f4b71Sopenharmony_ci
1540e41f4b71Sopenharmony_ci### getTaskInfo<sup>9+</sup>
1541e41f4b71Sopenharmony_ci
1542e41f4b71Sopenharmony_cigetTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1543e41f4b71Sopenharmony_ci
1544e41f4b71Sopenharmony_ci查询下载的任务,异步方法,使用callback形式返回结果。
1545e41f4b71Sopenharmony_ci
1546e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1547e41f4b71Sopenharmony_ci
1548e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1549e41f4b71Sopenharmony_ci
1550e41f4b71Sopenharmony_ci**参数:**
1551e41f4b71Sopenharmony_ci
1552e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1553e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1554e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 回调函数。当查询下载任务操作成功,err为undefined,data为获取到的DownloadInfo对象;否则为错误对象。 |
1555e41f4b71Sopenharmony_ci
1556e41f4b71Sopenharmony_ci**错误码:**
1557e41f4b71Sopenharmony_ci
1558e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1559e41f4b71Sopenharmony_ci
1560e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1561e41f4b71Sopenharmony_ci  | -------- | -------- |
1562e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1563e41f4b71Sopenharmony_ci
1564e41f4b71Sopenharmony_ci**示例:**
1565e41f4b71Sopenharmony_ci
1566e41f4b71Sopenharmony_ci  ```ts
1567e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1568e41f4b71Sopenharmony_ci
1569e41f4b71Sopenharmony_citry {
1570e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1571e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1572e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1573e41f4b71Sopenharmony_ci    downloadTask.getTaskInfo((err: BusinessError, downloadInfo: request.DownloadInfo) => {
1574e41f4b71Sopenharmony_ci      if (err) {
1575e41f4b71Sopenharmony_ci        console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
1576e41f4b71Sopenharmony_ci      } else {
1577e41f4b71Sopenharmony_ci        console.info('Succeeded in querying the download mimeType');
1578e41f4b71Sopenharmony_ci      }
1579e41f4b71Sopenharmony_ci    });
1580e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1581e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1582e41f4b71Sopenharmony_ci  })
1583e41f4b71Sopenharmony_ci} catch (err) {
1584e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1585e41f4b71Sopenharmony_ci}
1586e41f4b71Sopenharmony_ci  ```
1587e41f4b71Sopenharmony_ci
1588e41f4b71Sopenharmony_ci> **说明:**
1589e41f4b71Sopenharmony_ci>
1590e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1591e41f4b71Sopenharmony_ci
1592e41f4b71Sopenharmony_ci
1593e41f4b71Sopenharmony_ci### getTaskMimeType<sup>9+</sup>
1594e41f4b71Sopenharmony_ci
1595e41f4b71Sopenharmony_cigetTaskMimeType(): Promise&lt;string&gt;
1596e41f4b71Sopenharmony_ci
1597e41f4b71Sopenharmony_ci查询下载的任务的MimeType(HTTP中表示资源的媒体类型),异步方法,使用promise形式返回结果。
1598e41f4b71Sopenharmony_ci
1599e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1600e41f4b71Sopenharmony_ci
1601e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1602e41f4b71Sopenharmony_ci
1603e41f4b71Sopenharmony_ci**返回值:**
1604e41f4b71Sopenharmony_ci
1605e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1606e41f4b71Sopenharmony_ci  | -------- | -------- |
1607e41f4b71Sopenharmony_ci  | Promise&lt;string&gt; | 使用promise方式,异步返回下载任务的MimeType的Promise对象。 |
1608e41f4b71Sopenharmony_ci
1609e41f4b71Sopenharmony_ci**错误码:**
1610e41f4b71Sopenharmony_ci
1611e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1612e41f4b71Sopenharmony_ci
1613e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1614e41f4b71Sopenharmony_ci  | -------- | -------- |
1615e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1616e41f4b71Sopenharmony_ci
1617e41f4b71Sopenharmony_ci**示例:**
1618e41f4b71Sopenharmony_ci
1619e41f4b71Sopenharmony_ci  ```ts
1620e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1621e41f4b71Sopenharmony_ci
1622e41f4b71Sopenharmony_citry {
1623e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1624e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1625e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1626e41f4b71Sopenharmony_ci    downloadTask.getTaskMimeType().then((data: string) => {
1627e41f4b71Sopenharmony_ci      console.info('Succeeded in querying the download MimeType');
1628e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1629e41f4b71Sopenharmony_ci      console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
1630e41f4b71Sopenharmony_ci    });
1631e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1632e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1633e41f4b71Sopenharmony_ci  })
1634e41f4b71Sopenharmony_ci} catch (err) {
1635e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1636e41f4b71Sopenharmony_ci}
1637e41f4b71Sopenharmony_ci  ```
1638e41f4b71Sopenharmony_ci
1639e41f4b71Sopenharmony_ci> **说明:**
1640e41f4b71Sopenharmony_ci>
1641e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1642e41f4b71Sopenharmony_ci
1643e41f4b71Sopenharmony_ci
1644e41f4b71Sopenharmony_ci### getTaskMimeType<sup>9+</sup>
1645e41f4b71Sopenharmony_ci
1646e41f4b71Sopenharmony_cigetTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
1647e41f4b71Sopenharmony_ci
1648e41f4b71Sopenharmony_ci查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。
1649e41f4b71Sopenharmony_ci
1650e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1651e41f4b71Sopenharmony_ci
1652e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1653e41f4b71Sopenharmony_ci
1654e41f4b71Sopenharmony_ci**参数:**
1655e41f4b71Sopenharmony_ci
1656e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1657e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1658e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;string&gt; | 是 | 回调函数。当查询下载任务MimeType成功,err为undefined,data为获取到的下载任务的MimeType对象;否则为错误对象。 |
1659e41f4b71Sopenharmony_ci
1660e41f4b71Sopenharmony_ci**错误码:**
1661e41f4b71Sopenharmony_ci
1662e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1663e41f4b71Sopenharmony_ci
1664e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1665e41f4b71Sopenharmony_ci  | -------- | -------- |
1666e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1667e41f4b71Sopenharmony_ci
1668e41f4b71Sopenharmony_ci**示例:**
1669e41f4b71Sopenharmony_ci
1670e41f4b71Sopenharmony_ci  ```ts
1671e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1672e41f4b71Sopenharmony_ci
1673e41f4b71Sopenharmony_citry {
1674e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1675e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1676e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1677e41f4b71Sopenharmony_ci    downloadTask.getTaskMimeType((err: BusinessError, data: string) => {
1678e41f4b71Sopenharmony_ci      if (err) {
1679e41f4b71Sopenharmony_ci        console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
1680e41f4b71Sopenharmony_ci      } else {
1681e41f4b71Sopenharmony_ci        console.info('Succeeded in querying the download mimeType');
1682e41f4b71Sopenharmony_ci      }
1683e41f4b71Sopenharmony_ci    });
1684e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1685e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1686e41f4b71Sopenharmony_ci  })
1687e41f4b71Sopenharmony_ci} catch (err) {
1688e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1689e41f4b71Sopenharmony_ci}
1690e41f4b71Sopenharmony_ci  ```
1691e41f4b71Sopenharmony_ci
1692e41f4b71Sopenharmony_ci> **说明:**
1693e41f4b71Sopenharmony_ci>
1694e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1695e41f4b71Sopenharmony_ci
1696e41f4b71Sopenharmony_ci
1697e41f4b71Sopenharmony_ci### suspend<sup>9+</sup>
1698e41f4b71Sopenharmony_ci
1699e41f4b71Sopenharmony_cisuspend(): Promise&lt;boolean&gt;
1700e41f4b71Sopenharmony_ci
1701e41f4b71Sopenharmony_ci暂停下载任务,异步方法,使用promise形式返回结果。
1702e41f4b71Sopenharmony_ci
1703e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1704e41f4b71Sopenharmony_ci
1705e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1706e41f4b71Sopenharmony_ci
1707e41f4b71Sopenharmony_ci**返回值:**
1708e41f4b71Sopenharmony_ci
1709e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1710e41f4b71Sopenharmony_ci  | -------- | -------- |
1711e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用promise方式异步回调,返回true表示暂停下载任务成功;返回false表示暂停下载任务失败。 |
1712e41f4b71Sopenharmony_ci
1713e41f4b71Sopenharmony_ci**错误码:**
1714e41f4b71Sopenharmony_ci
1715e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1716e41f4b71Sopenharmony_ci
1717e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1718e41f4b71Sopenharmony_ci  | -------- | -------- |
1719e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1720e41f4b71Sopenharmony_ci
1721e41f4b71Sopenharmony_ci**示例:**
1722e41f4b71Sopenharmony_ci
1723e41f4b71Sopenharmony_ci  ```ts
1724e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1725e41f4b71Sopenharmony_ci
1726e41f4b71Sopenharmony_citry {
1727e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1728e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1729e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1730e41f4b71Sopenharmony_ci    downloadTask.suspend().then((result: boolean) => {
1731e41f4b71Sopenharmony_ci      console.info('Succeeded in pausing the download task.');
1732e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1733e41f4b71Sopenharmony_ci      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
1734e41f4b71Sopenharmony_ci    });
1735e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1736e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1737e41f4b71Sopenharmony_ci  })
1738e41f4b71Sopenharmony_ci} catch (err) {
1739e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1740e41f4b71Sopenharmony_ci}
1741e41f4b71Sopenharmony_ci  ```
1742e41f4b71Sopenharmony_ci
1743e41f4b71Sopenharmony_ci> **说明:**
1744e41f4b71Sopenharmony_ci>
1745e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1746e41f4b71Sopenharmony_ci
1747e41f4b71Sopenharmony_ci
1748e41f4b71Sopenharmony_ci### suspend<sup>9+</sup>
1749e41f4b71Sopenharmony_ci
1750e41f4b71Sopenharmony_cisuspend(callback: AsyncCallback&lt;boolean&gt;): void
1751e41f4b71Sopenharmony_ci
1752e41f4b71Sopenharmony_ci暂停下载任务,异步方法,使用callback形式返回结果。
1753e41f4b71Sopenharmony_ci
1754e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1755e41f4b71Sopenharmony_ci
1756e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1757e41f4b71Sopenharmony_ci
1758e41f4b71Sopenharmony_ci**参数:**
1759e41f4b71Sopenharmony_ci
1760e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1761e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1762e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示暂停下载任务成功;返回false表示暂停下载任务失败。 |
1763e41f4b71Sopenharmony_ci
1764e41f4b71Sopenharmony_ci**错误码:**
1765e41f4b71Sopenharmony_ci
1766e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1767e41f4b71Sopenharmony_ci
1768e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1769e41f4b71Sopenharmony_ci  | -------- | -------- |
1770e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1771e41f4b71Sopenharmony_ci
1772e41f4b71Sopenharmony_ci**示例:**
1773e41f4b71Sopenharmony_ci
1774e41f4b71Sopenharmony_ci  ```ts
1775e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1776e41f4b71Sopenharmony_ci
1777e41f4b71Sopenharmony_citry {
1778e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1779e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1780e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1781e41f4b71Sopenharmony_ci    downloadTask.suspend((err: BusinessError, result: boolean) => {
1782e41f4b71Sopenharmony_ci      if (err) {
1783e41f4b71Sopenharmony_ci        console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
1784e41f4b71Sopenharmony_ci        return;
1785e41f4b71Sopenharmony_ci      }
1786e41f4b71Sopenharmony_ci      console.info('Succeeded in pausing the download task.');
1787e41f4b71Sopenharmony_ci    });
1788e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1789e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1790e41f4b71Sopenharmony_ci  })
1791e41f4b71Sopenharmony_ci} catch (err) {
1792e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1793e41f4b71Sopenharmony_ci}
1794e41f4b71Sopenharmony_ci  ```
1795e41f4b71Sopenharmony_ci
1796e41f4b71Sopenharmony_ci> **说明:**
1797e41f4b71Sopenharmony_ci>
1798e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1799e41f4b71Sopenharmony_ci
1800e41f4b71Sopenharmony_ci
1801e41f4b71Sopenharmony_ci### restore<sup>9+</sup>
1802e41f4b71Sopenharmony_ci
1803e41f4b71Sopenharmony_cirestore(): Promise&lt;boolean&gt;
1804e41f4b71Sopenharmony_ci
1805e41f4b71Sopenharmony_ci重新启动暂停的下载任务,异步方法,使用promise形式返回结果。
1806e41f4b71Sopenharmony_ci
1807e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1808e41f4b71Sopenharmony_ci
1809e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1810e41f4b71Sopenharmony_ci
1811e41f4b71Sopenharmony_ci**返回值:**
1812e41f4b71Sopenharmony_ci
1813e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1814e41f4b71Sopenharmony_ci  | -------- | -------- |
1815e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用promise方式异步回调,返回true表示重新启动已暂停的下载任务成功;返回false表示重新启动下载任务失败。 |
1816e41f4b71Sopenharmony_ci
1817e41f4b71Sopenharmony_ci**错误码:**
1818e41f4b71Sopenharmony_ci
1819e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1820e41f4b71Sopenharmony_ci
1821e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1822e41f4b71Sopenharmony_ci  | -------- | -------- |
1823e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1824e41f4b71Sopenharmony_ci
1825e41f4b71Sopenharmony_ci**示例:**
1826e41f4b71Sopenharmony_ci
1827e41f4b71Sopenharmony_ci  ```ts
1828e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1829e41f4b71Sopenharmony_ci
1830e41f4b71Sopenharmony_citry {
1831e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1832e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1833e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1834e41f4b71Sopenharmony_ci    downloadTask.restore().then((result: boolean) => {
1835e41f4b71Sopenharmony_ci      console.info('Succeeded in resuming the download task.')
1836e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
1837e41f4b71Sopenharmony_ci      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
1838e41f4b71Sopenharmony_ci    });
1839e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1840e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1841e41f4b71Sopenharmony_ci  })
1842e41f4b71Sopenharmony_ci} catch (err) {
1843e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1844e41f4b71Sopenharmony_ci}
1845e41f4b71Sopenharmony_ci  ```
1846e41f4b71Sopenharmony_ci
1847e41f4b71Sopenharmony_ci> **说明:**
1848e41f4b71Sopenharmony_ci>
1849e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1850e41f4b71Sopenharmony_ci
1851e41f4b71Sopenharmony_ci
1852e41f4b71Sopenharmony_ci### restore<sup>9+</sup>
1853e41f4b71Sopenharmony_ci
1854e41f4b71Sopenharmony_cirestore(callback: AsyncCallback&lt;boolean&gt;): void
1855e41f4b71Sopenharmony_ci
1856e41f4b71Sopenharmony_ci重新启动暂停的下载任务,异步方法,使用callback形式返回结果。
1857e41f4b71Sopenharmony_ci
1858e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1859e41f4b71Sopenharmony_ci
1860e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1861e41f4b71Sopenharmony_ci
1862e41f4b71Sopenharmony_ci**参数:**
1863e41f4b71Sopenharmony_ci
1864e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1865e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1866e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示重新启动已暂停的下载任务成功;返回false表示重新启动下载任务失败。 |
1867e41f4b71Sopenharmony_ci
1868e41f4b71Sopenharmony_ci**错误码:**
1869e41f4b71Sopenharmony_ci
1870e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
1871e41f4b71Sopenharmony_ci
1872e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1873e41f4b71Sopenharmony_ci  | -------- | -------- |
1874e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1875e41f4b71Sopenharmony_ci
1876e41f4b71Sopenharmony_ci**示例:**
1877e41f4b71Sopenharmony_ci
1878e41f4b71Sopenharmony_ci  ```ts
1879e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1880e41f4b71Sopenharmony_ci
1881e41f4b71Sopenharmony_citry {
1882e41f4b71Sopenharmony_ci  // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
1883e41f4b71Sopenharmony_ci  request.downloadFile(getContext(), { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
1884e41f4b71Sopenharmony_ci    let downloadTask: request.DownloadTask = data;
1885e41f4b71Sopenharmony_ci    downloadTask.restore((err: BusinessError, result: boolean) => {
1886e41f4b71Sopenharmony_ci      if (err) {
1887e41f4b71Sopenharmony_ci        console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
1888e41f4b71Sopenharmony_ci        return;
1889e41f4b71Sopenharmony_ci      }
1890e41f4b71Sopenharmony_ci      console.info('Succeeded in resuming the download task.');
1891e41f4b71Sopenharmony_ci    });
1892e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
1893e41f4b71Sopenharmony_ci    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
1894e41f4b71Sopenharmony_ci  })
1895e41f4b71Sopenharmony_ci} catch (err) {
1896e41f4b71Sopenharmony_ci  console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
1897e41f4b71Sopenharmony_ci}
1898e41f4b71Sopenharmony_ci  ```
1899e41f4b71Sopenharmony_ci
1900e41f4b71Sopenharmony_ci> **说明:**
1901e41f4b71Sopenharmony_ci>
1902e41f4b71Sopenharmony_ci> 由于不存在401报错场景,在 api12 中 `401 the parameters check fails` 这个错误码被移除。
1903e41f4b71Sopenharmony_ci
1904e41f4b71Sopenharmony_ci
1905e41f4b71Sopenharmony_ci### remove<sup>(deprecated)</sup>
1906e41f4b71Sopenharmony_ci
1907e41f4b71Sopenharmony_ciremove(): Promise&lt;boolean&gt;
1908e41f4b71Sopenharmony_ci
1909e41f4b71Sopenharmony_ci移除下载的任务,异步方法,使用promise形式返回结果。
1910e41f4b71Sopenharmony_ci
1911e41f4b71Sopenharmony_ci> **说明:**
1912e41f4b71Sopenharmony_ci>
1913e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-2)替代。
1914e41f4b71Sopenharmony_ci
1915e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1916e41f4b71Sopenharmony_ci
1917e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1918e41f4b71Sopenharmony_ci
1919e41f4b71Sopenharmony_ci**返回值:**
1920e41f4b71Sopenharmony_ci
1921e41f4b71Sopenharmony_ci  | 类型 | 说明 |
1922e41f4b71Sopenharmony_ci  | -------- | -------- |
1923e41f4b71Sopenharmony_ci  | Promise&lt;boolean&gt; | 使用promise方式异步回调,返回true表示移除下载任务成功;返回false表示移除下载任务失败。 |
1924e41f4b71Sopenharmony_ci
1925e41f4b71Sopenharmony_ci**错误码:**
1926e41f4b71Sopenharmony_ci
1927e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
1928e41f4b71Sopenharmony_ci
1929e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1930e41f4b71Sopenharmony_ci  | -------- | -------- |
1931e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1932e41f4b71Sopenharmony_ci
1933e41f4b71Sopenharmony_ci**示例:**
1934e41f4b71Sopenharmony_ci
1935e41f4b71Sopenharmony_ci  ```js
1936e41f4b71Sopenharmony_ci  downloadTask.remove().then((result) => {
1937e41f4b71Sopenharmony_ci    console.info('Succeeded in removing the download task.');
1938e41f4b71Sopenharmony_ci  }).catch ((err) => {
1939e41f4b71Sopenharmony_ci    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1940e41f4b71Sopenharmony_ci  });
1941e41f4b71Sopenharmony_ci  ```
1942e41f4b71Sopenharmony_ci
1943e41f4b71Sopenharmony_ci
1944e41f4b71Sopenharmony_ci### remove<sup>(deprecated)</sup>
1945e41f4b71Sopenharmony_ci
1946e41f4b71Sopenharmony_ciremove(callback: AsyncCallback&lt;boolean&gt;): void
1947e41f4b71Sopenharmony_ci
1948e41f4b71Sopenharmony_ci移除下载的任务,异步方法,使用callback形式返回结果。
1949e41f4b71Sopenharmony_ci
1950e41f4b71Sopenharmony_ci> **说明:**
1951e41f4b71Sopenharmony_ci>
1952e41f4b71Sopenharmony_ci> 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-3)替代。
1953e41f4b71Sopenharmony_ci
1954e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1955e41f4b71Sopenharmony_ci
1956e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1957e41f4b71Sopenharmony_ci
1958e41f4b71Sopenharmony_ci**参数:**
1959e41f4b71Sopenharmony_ci
1960e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
1961e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
1962e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。返回true表示移除下载任务成功;返回false表示移除下载任务失败。 |
1963e41f4b71Sopenharmony_ci
1964e41f4b71Sopenharmony_ci**错误码:**
1965e41f4b71Sopenharmony_ci
1966e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
1967e41f4b71Sopenharmony_ci
1968e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
1969e41f4b71Sopenharmony_ci  | -------- | -------- |
1970e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
1971e41f4b71Sopenharmony_ci
1972e41f4b71Sopenharmony_ci**示例:**
1973e41f4b71Sopenharmony_ci
1974e41f4b71Sopenharmony_ci  ```js
1975e41f4b71Sopenharmony_ci  downloadTask.remove((err, result)=>{
1976e41f4b71Sopenharmony_ci    if(err) {
1977e41f4b71Sopenharmony_ci      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1978e41f4b71Sopenharmony_ci      return;
1979e41f4b71Sopenharmony_ci    }
1980e41f4b71Sopenharmony_ci    console.info('Succeeded in removing the download task.');
1981e41f4b71Sopenharmony_ci  });
1982e41f4b71Sopenharmony_ci  ```
1983e41f4b71Sopenharmony_ci
1984e41f4b71Sopenharmony_ci
1985e41f4b71Sopenharmony_ci### query<sup>(deprecated)</sup>
1986e41f4b71Sopenharmony_ci
1987e41f4b71Sopenharmony_ciquery(): Promise&lt;DownloadInfo&gt;
1988e41f4b71Sopenharmony_ci
1989e41f4b71Sopenharmony_ci查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。
1990e41f4b71Sopenharmony_ci
1991e41f4b71Sopenharmony_ci> **说明:**
1992e41f4b71Sopenharmony_ci>
1993e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9)替代。
1994e41f4b71Sopenharmony_ci
1995e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
1996e41f4b71Sopenharmony_ci
1997e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
1998e41f4b71Sopenharmony_ci
1999e41f4b71Sopenharmony_ci**返回值:**
2000e41f4b71Sopenharmony_ci
2001e41f4b71Sopenharmony_ci  | 类型 | 说明 |
2002e41f4b71Sopenharmony_ci  | -------- | -------- |
2003e41f4b71Sopenharmony_ci  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 使用promise方式,异步返回下载任务信息DownloadInfo的Promise对象。 |
2004e41f4b71Sopenharmony_ci
2005e41f4b71Sopenharmony_ci**错误码:**
2006e41f4b71Sopenharmony_ci
2007e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2008e41f4b71Sopenharmony_ci
2009e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2010e41f4b71Sopenharmony_ci  | -------- | -------- |
2011e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2012e41f4b71Sopenharmony_ci
2013e41f4b71Sopenharmony_ci**示例:**
2014e41f4b71Sopenharmony_ci
2015e41f4b71Sopenharmony_ci  ```js
2016e41f4b71Sopenharmony_ci  downloadTask.query().then((downloadInfo) => {    
2017e41f4b71Sopenharmony_ci    console.info('Succeeded in querying the download task.')
2018e41f4b71Sopenharmony_ci  }) .catch((err) => {
2019e41f4b71Sopenharmony_ci    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
2020e41f4b71Sopenharmony_ci  });
2021e41f4b71Sopenharmony_ci  ```
2022e41f4b71Sopenharmony_ci
2023e41f4b71Sopenharmony_ci
2024e41f4b71Sopenharmony_ci### query<sup>(deprecated)</sup>
2025e41f4b71Sopenharmony_ci
2026e41f4b71Sopenharmony_ciquery(callback: AsyncCallback&lt;DownloadInfo&gt;): void
2027e41f4b71Sopenharmony_ci
2028e41f4b71Sopenharmony_ci查询下载的任务,异步方法,使用callback形式返回结果。
2029e41f4b71Sopenharmony_ci
2030e41f4b71Sopenharmony_ci> **说明:**
2031e41f4b71Sopenharmony_ci>
2032e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9-1)替代。
2033e41f4b71Sopenharmony_ci
2034e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2035e41f4b71Sopenharmony_ci
2036e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2037e41f4b71Sopenharmony_ci
2038e41f4b71Sopenharmony_ci**参数:**
2039e41f4b71Sopenharmony_ci
2040e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2041e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2042e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 回调函数。当查询下载任务成功,err为undefined,data为获取到的DownloadInfo对象;否则为错误对象。 |
2043e41f4b71Sopenharmony_ci
2044e41f4b71Sopenharmony_ci**错误码:**
2045e41f4b71Sopenharmony_ci
2046e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2047e41f4b71Sopenharmony_ci
2048e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2049e41f4b71Sopenharmony_ci  | -------- | -------- |
2050e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2051e41f4b71Sopenharmony_ci
2052e41f4b71Sopenharmony_ci**示例:**
2053e41f4b71Sopenharmony_ci
2054e41f4b71Sopenharmony_ci  ```js
2055e41f4b71Sopenharmony_ci  downloadTask.query((err, downloadInfo)=>{
2056e41f4b71Sopenharmony_ci    if(err) {
2057e41f4b71Sopenharmony_ci      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
2058e41f4b71Sopenharmony_ci    } else {
2059e41f4b71Sopenharmony_ci      console.info('Succeeded in querying the download task.');
2060e41f4b71Sopenharmony_ci    }
2061e41f4b71Sopenharmony_ci  });
2062e41f4b71Sopenharmony_ci  ```
2063e41f4b71Sopenharmony_ci
2064e41f4b71Sopenharmony_ci
2065e41f4b71Sopenharmony_ci### queryMimeType<sup>(deprecated)</sup>
2066e41f4b71Sopenharmony_ci
2067e41f4b71Sopenharmony_ciqueryMimeType(): Promise&lt;string&gt;
2068e41f4b71Sopenharmony_ci
2069e41f4b71Sopenharmony_ci查询下载的任务的MimeType,异步方法,使用promise形式返回结果。
2070e41f4b71Sopenharmony_ci
2071e41f4b71Sopenharmony_ci> **说明:**
2072e41f4b71Sopenharmony_ci>
2073e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9)替代。
2074e41f4b71Sopenharmony_ci
2075e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2076e41f4b71Sopenharmony_ci
2077e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2078e41f4b71Sopenharmony_ci
2079e41f4b71Sopenharmony_ci**返回值:**
2080e41f4b71Sopenharmony_ci
2081e41f4b71Sopenharmony_ci  | 类型 | 说明 |
2082e41f4b71Sopenharmony_ci  | -------- | -------- |
2083e41f4b71Sopenharmony_ci  | Promise&lt;string&gt; | 使用promise方式,异步返回下载任务的MimeType的Promise对象。 |
2084e41f4b71Sopenharmony_ci
2085e41f4b71Sopenharmony_ci**错误码:**
2086e41f4b71Sopenharmony_ci
2087e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2088e41f4b71Sopenharmony_ci
2089e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2090e41f4b71Sopenharmony_ci  | -------- | -------- |
2091e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2092e41f4b71Sopenharmony_ci
2093e41f4b71Sopenharmony_ci**示例:**
2094e41f4b71Sopenharmony_ci
2095e41f4b71Sopenharmony_ci  ```js
2096e41f4b71Sopenharmony_ci  downloadTask.queryMimeType().then((data) => {    
2097e41f4b71Sopenharmony_ci    console.info('Succeeded in querying the download MimeType.');
2098e41f4b71Sopenharmony_ci  }).catch((err) => {
2099e41f4b71Sopenharmony_ci    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
2100e41f4b71Sopenharmony_ci  });
2101e41f4b71Sopenharmony_ci  ```
2102e41f4b71Sopenharmony_ci
2103e41f4b71Sopenharmony_ci
2104e41f4b71Sopenharmony_ci### queryMimeType<sup>(deprecated)</sup>
2105e41f4b71Sopenharmony_ci
2106e41f4b71Sopenharmony_ciqueryMimeType(callback: AsyncCallback&lt;string&gt;): void;
2107e41f4b71Sopenharmony_ci
2108e41f4b71Sopenharmony_ci查询下载的任务的MimeType,异步方法,使用callback形式返回结果。
2109e41f4b71Sopenharmony_ci
2110e41f4b71Sopenharmony_ci> **说明:**
2111e41f4b71Sopenharmony_ci>
2112e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9-1)替代。
2113e41f4b71Sopenharmony_ci
2114e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2115e41f4b71Sopenharmony_ci
2116e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2117e41f4b71Sopenharmony_ci
2118e41f4b71Sopenharmony_ci**参数:**
2119e41f4b71Sopenharmony_ci
2120e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2121e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2122e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;string&gt; | 是 | 回调函数。当查询下载任务的MimeType成功,err为undefined,data为获取到的任务MimeType对象;否则为错误对象。 |
2123e41f4b71Sopenharmony_ci
2124e41f4b71Sopenharmony_ci**错误码:**
2125e41f4b71Sopenharmony_ci
2126e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2127e41f4b71Sopenharmony_ci
2128e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2129e41f4b71Sopenharmony_ci  | -------- | -------- |
2130e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2131e41f4b71Sopenharmony_ci
2132e41f4b71Sopenharmony_ci**示例:**
2133e41f4b71Sopenharmony_ci
2134e41f4b71Sopenharmony_ci  ```js
2135e41f4b71Sopenharmony_ci  downloadTask.queryMimeType((err, data)=>{
2136e41f4b71Sopenharmony_ci    if(err) {
2137e41f4b71Sopenharmony_ci      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
2138e41f4b71Sopenharmony_ci    } else {
2139e41f4b71Sopenharmony_ci      console.info('Succeeded in querying the download mimeType.');
2140e41f4b71Sopenharmony_ci    }
2141e41f4b71Sopenharmony_ci  });
2142e41f4b71Sopenharmony_ci  ```
2143e41f4b71Sopenharmony_ci
2144e41f4b71Sopenharmony_ci
2145e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
2146e41f4b71Sopenharmony_ci
2147e41f4b71Sopenharmony_cipause(): Promise&lt;void&gt;
2148e41f4b71Sopenharmony_ci
2149e41f4b71Sopenharmony_ci暂停下载任务,异步方法,使用promise形式返回结果。
2150e41f4b71Sopenharmony_ci
2151e41f4b71Sopenharmony_ci> **说明:**
2152e41f4b71Sopenharmony_ci>
2153e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9)替代。
2154e41f4b71Sopenharmony_ci
2155e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2156e41f4b71Sopenharmony_ci
2157e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2158e41f4b71Sopenharmony_ci
2159e41f4b71Sopenharmony_ci**返回值:**
2160e41f4b71Sopenharmony_ci
2161e41f4b71Sopenharmony_ci  | 类型 | 说明 |
2162e41f4b71Sopenharmony_ci  | -------- | -------- |
2163e41f4b71Sopenharmony_ci  | Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
2164e41f4b71Sopenharmony_ci
2165e41f4b71Sopenharmony_ci**错误码:**
2166e41f4b71Sopenharmony_ci
2167e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2168e41f4b71Sopenharmony_ci
2169e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2170e41f4b71Sopenharmony_ci  | -------- | -------- |
2171e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2172e41f4b71Sopenharmony_ci
2173e41f4b71Sopenharmony_ci**示例:**
2174e41f4b71Sopenharmony_ci
2175e41f4b71Sopenharmony_ci  ```js
2176e41f4b71Sopenharmony_ci  downloadTask.pause().then((result) => {    
2177e41f4b71Sopenharmony_ci    console.info('Succeeded in pausing the download task.');
2178e41f4b71Sopenharmony_ci  }).catch((err) => {
2179e41f4b71Sopenharmony_ci    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
2180e41f4b71Sopenharmony_ci  });
2181e41f4b71Sopenharmony_ci  ```
2182e41f4b71Sopenharmony_ci
2183e41f4b71Sopenharmony_ci
2184e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
2185e41f4b71Sopenharmony_ci
2186e41f4b71Sopenharmony_cipause(callback: AsyncCallback&lt;void&gt;): void
2187e41f4b71Sopenharmony_ci
2188e41f4b71Sopenharmony_ci> **说明:**
2189e41f4b71Sopenharmony_ci>
2190e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
2191e41f4b71Sopenharmony_ci
2192e41f4b71Sopenharmony_ci暂停下载任务,异步方法,使用callback形式返回结果。
2193e41f4b71Sopenharmony_ci
2194e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2195e41f4b71Sopenharmony_ci
2196e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2197e41f4b71Sopenharmony_ci
2198e41f4b71Sopenharmony_ci**参数:**
2199e41f4b71Sopenharmony_ci
2200e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2201e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2202e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当暂停下载任务成功,err为undefined,否则为错误对象。 |
2203e41f4b71Sopenharmony_ci
2204e41f4b71Sopenharmony_ci**错误码:**
2205e41f4b71Sopenharmony_ci
2206e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2207e41f4b71Sopenharmony_ci
2208e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2209e41f4b71Sopenharmony_ci  | -------- | -------- |
2210e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2211e41f4b71Sopenharmony_ci
2212e41f4b71Sopenharmony_ci**示例:**
2213e41f4b71Sopenharmony_ci
2214e41f4b71Sopenharmony_ci  ```js
2215e41f4b71Sopenharmony_ci  downloadTask.pause((err, result)=>{
2216e41f4b71Sopenharmony_ci    if(err) {
2217e41f4b71Sopenharmony_ci      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
2218e41f4b71Sopenharmony_ci      return;
2219e41f4b71Sopenharmony_ci    }
2220e41f4b71Sopenharmony_ci    console.info('Succeeded in pausing the download task.');
2221e41f4b71Sopenharmony_ci  });
2222e41f4b71Sopenharmony_ci  ```
2223e41f4b71Sopenharmony_ci
2224e41f4b71Sopenharmony_ci
2225e41f4b71Sopenharmony_ci### resume<sup>(deprecated)</sup>
2226e41f4b71Sopenharmony_ci
2227e41f4b71Sopenharmony_ciresume(): Promise&lt;void&gt;
2228e41f4b71Sopenharmony_ci
2229e41f4b71Sopenharmony_ci重新启动暂停的下载任务,异步方法,使用promise形式返回结果。
2230e41f4b71Sopenharmony_ci
2231e41f4b71Sopenharmony_ci> **说明:**
2232e41f4b71Sopenharmony_ci>
2233e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9)替代。
2234e41f4b71Sopenharmony_ci
2235e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2236e41f4b71Sopenharmony_ci
2237e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2238e41f4b71Sopenharmony_ci
2239e41f4b71Sopenharmony_ci**返回值:**
2240e41f4b71Sopenharmony_ci
2241e41f4b71Sopenharmony_ci  | 类型 | 说明 |
2242e41f4b71Sopenharmony_ci  | -------- | -------- |
2243e41f4b71Sopenharmony_ci  | Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
2244e41f4b71Sopenharmony_ci
2245e41f4b71Sopenharmony_ci**错误码:**
2246e41f4b71Sopenharmony_ci
2247e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2248e41f4b71Sopenharmony_ci
2249e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2250e41f4b71Sopenharmony_ci  | -------- | -------- |
2251e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2252e41f4b71Sopenharmony_ci
2253e41f4b71Sopenharmony_ci**示例:**
2254e41f4b71Sopenharmony_ci
2255e41f4b71Sopenharmony_ci  ```js
2256e41f4b71Sopenharmony_ci  downloadTask.resume().then((result) => {
2257e41f4b71Sopenharmony_ci    console.info('Succeeded in resuming the download task.')
2258e41f4b71Sopenharmony_ci  }).catch((err) => {
2259e41f4b71Sopenharmony_ci    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
2260e41f4b71Sopenharmony_ci  });
2261e41f4b71Sopenharmony_ci  ```
2262e41f4b71Sopenharmony_ci
2263e41f4b71Sopenharmony_ci
2264e41f4b71Sopenharmony_ci### resume<sup>(deprecated)</sup>
2265e41f4b71Sopenharmony_ci
2266e41f4b71Sopenharmony_ciresume(callback: AsyncCallback&lt;void&gt;): void
2267e41f4b71Sopenharmony_ci
2268e41f4b71Sopenharmony_ci> **说明:**
2269e41f4b71Sopenharmony_ci>
2270e41f4b71Sopenharmony_ci> 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
2271e41f4b71Sopenharmony_ci
2272e41f4b71Sopenharmony_ci重新启动暂停的下载任务,异步方法,使用callback形式返回结果。
2273e41f4b71Sopenharmony_ci
2274e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
2275e41f4b71Sopenharmony_ci
2276e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2277e41f4b71Sopenharmony_ci
2278e41f4b71Sopenharmony_ci**参数:**
2279e41f4b71Sopenharmony_ci
2280e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2281e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2282e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当重新启动已暂停的下载任务成功,err为undefined,否则为错误对象。 |
2283e41f4b71Sopenharmony_ci
2284e41f4b71Sopenharmony_ci**错误码:**
2285e41f4b71Sopenharmony_ci
2286e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2287e41f4b71Sopenharmony_ci
2288e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2289e41f4b71Sopenharmony_ci  | -------- | -------- |
2290e41f4b71Sopenharmony_ci  | 201 | the permissions check fails |
2291e41f4b71Sopenharmony_ci
2292e41f4b71Sopenharmony_ci**示例:**
2293e41f4b71Sopenharmony_ci
2294e41f4b71Sopenharmony_ci  ```js
2295e41f4b71Sopenharmony_ci  downloadTask.resume((err, result)=>{
2296e41f4b71Sopenharmony_ci    if (err) {
2297e41f4b71Sopenharmony_ci      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
2298e41f4b71Sopenharmony_ci      return;
2299e41f4b71Sopenharmony_ci    }
2300e41f4b71Sopenharmony_ci    console.info('Succeeded in resuming the download task.');
2301e41f4b71Sopenharmony_ci  });
2302e41f4b71Sopenharmony_ci  ```
2303e41f4b71Sopenharmony_ci
2304e41f4b71Sopenharmony_ci
2305e41f4b71Sopenharmony_ci## DownloadConfig
2306e41f4b71Sopenharmony_ci下载任务的配置信息。
2307e41f4b71Sopenharmony_ci
2308e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2309e41f4b71Sopenharmony_ci
2310e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2311e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2312e41f4b71Sopenharmony_ci| url | string | 是 | 资源地址,其最大长度为2048个字符。 |
2313e41f4b71Sopenharmony_ci| header | Object | 否 | 添加要包含在下载请求中的HTTPS标志头。|
2314e41f4b71Sopenharmony_ci| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载(默认使用false)。Wi-Fi为非计费网络,数据流量为计费网络。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
2315e41f4b71Sopenharmony_ci| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载(默认使用false)。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
2316e41f4b71Sopenharmony_ci| description | string | 否 | 设置下载会话的描述。 |
2317e41f4b71Sopenharmony_ci| filePath<sup>7+</sup> | string | 否 | 设置下载路径。默认为调用方(即传入的context)对应的缓存路径。默认文件名从url的最后一个"/"后截取。<br/>-&nbsp;FA模型下使用[context](../apis-ability-kit/js-apis-inner-app-context.md#contextgetcachedir) 获取应用存储路径。<br/>-&nbsp;Stage模型下使用[AbilityContext](../apis-ability-kit/js-apis-inner-application-context.md) 类获取文件路径。|
2318e41f4b71Sopenharmony_ci| networkType | number | 否 | 设置允许下载的网络类型(默认使用NETWORK_MOBILE&NETWORK_WIFI)。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
2319e41f4b71Sopenharmony_ci| title | string | 否 | 设置下载任务名称。 |
2320e41f4b71Sopenharmony_ci| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态(默认使用false)。 |
2321e41f4b71Sopenharmony_ci
2322e41f4b71Sopenharmony_ci
2323e41f4b71Sopenharmony_ci## DownloadInfo<sup>7+</sup>
2324e41f4b71Sopenharmony_ci下载任务信息,[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口的回调参数。
2325e41f4b71Sopenharmony_ci
2326e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MiscServices.Download
2327e41f4b71Sopenharmony_ci
2328e41f4b71Sopenharmony_ci| 名称 | 类型 |必填 |  说明 |
2329e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2330e41f4b71Sopenharmony_ci| downloadId | number |是 | 下载任务ID。 |
2331e41f4b71Sopenharmony_ci| failedReason | number|是 | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
2332e41f4b71Sopenharmony_ci| fileName | string |是| 下载的文件名。 |
2333e41f4b71Sopenharmony_ci| filePath | string |是| 存储文件的URI。 |
2334e41f4b71Sopenharmony_ci| pausedReason | number |是| 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
2335e41f4b71Sopenharmony_ci| status | number |是| 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
2336e41f4b71Sopenharmony_ci| targetURI | string |是| 下载文件的URI。 |
2337e41f4b71Sopenharmony_ci| downloadTitle | string |是| 下载任务名称。 |
2338e41f4b71Sopenharmony_ci| downloadTotalBytes | number |是| 下载的文件的总大小,单位为字节。 |
2339e41f4b71Sopenharmony_ci| description | string |是| 待下载任务的描述信息。 |
2340e41f4b71Sopenharmony_ci| downloadedBytes | number |是| 实时下载大小,单位为字节。 |
2341e41f4b71Sopenharmony_ci
2342e41f4b71Sopenharmony_ci## Action<sup>10+</sup>  
2343e41f4b71Sopenharmony_ci
2344e41f4b71Sopenharmony_ci定义操作选项。
2345e41f4b71Sopenharmony_ci
2346e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2347e41f4b71Sopenharmony_ci
2348e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2349e41f4b71Sopenharmony_ci
2350e41f4b71Sopenharmony_ci| 名称 | 值 |说明 |
2351e41f4b71Sopenharmony_ci| -------- | -------- |-------- |
2352e41f4b71Sopenharmony_ci| DOWNLOAD | 0 |表示下载任务。 |
2353e41f4b71Sopenharmony_ci| UPLOAD | 1 |表示上传任务。 |
2354e41f4b71Sopenharmony_ci
2355e41f4b71Sopenharmony_ci
2356e41f4b71Sopenharmony_ci## Mode<sup>10+</sup>  
2357e41f4b71Sopenharmony_ci定义模式选项。<br>
2358e41f4b71Sopenharmony_ci前端任务在应用切换到后台一段时间后失败/暂停;后台任务不受影响。
2359e41f4b71Sopenharmony_ci
2360e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2361e41f4b71Sopenharmony_ci
2362e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2363e41f4b71Sopenharmony_ci
2364e41f4b71Sopenharmony_ci| 名称 | 值 |说明 |
2365e41f4b71Sopenharmony_ci| -------- | -------- |-------- |
2366e41f4b71Sopenharmony_ci| BACKGROUND | 0 |表示后台任务。 |
2367e41f4b71Sopenharmony_ci| FOREGROUND | 1 |表示前端任务。 |
2368e41f4b71Sopenharmony_ci
2369e41f4b71Sopenharmony_ci## Network<sup>10+</sup>  
2370e41f4b71Sopenharmony_ci
2371e41f4b71Sopenharmony_ci定义网络选项。<br>
2372e41f4b71Sopenharmony_ci网络不满足设置条件时,未执行的任务等待执行,执行中的任务失败/暂停。
2373e41f4b71Sopenharmony_ci
2374e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2375e41f4b71Sopenharmony_ci
2376e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2377e41f4b71Sopenharmony_ci
2378e41f4b71Sopenharmony_ci| 名称 | 值 |说明 |
2379e41f4b71Sopenharmony_ci| -------- | -------- |-------- |
2380e41f4b71Sopenharmony_ci| ANY | 0 |表示不限网络类型。 |
2381e41f4b71Sopenharmony_ci| WIFI | 1 |表示无线网络。 |
2382e41f4b71Sopenharmony_ci| CELLULAR | 2 |表示蜂窝数据网络。 |
2383e41f4b71Sopenharmony_ci
2384e41f4b71Sopenharmony_ci## BroadcastEvent<sup>11+</sup>
2385e41f4b71Sopenharmony_ci
2386e41f4b71Sopenharmony_ci定义自定义系统事件。用户可以使用公共事件接口获取该事件。
2387e41f4b71Sopenharmony_ci上传下载 SA 具有 'ohos.permission.SEND_TASK_COMPLETE_EVENT' 该权限,用户可以配置事件的 metadata 指向的二级配置文件来拦截其他事件发送者。
2388e41f4b71Sopenharmony_ci
2389e41f4b71Sopenharmony_ci使用 CommonEventData 类型传输公共事件相关数据。成员的内容填写和 [CommonEventData介绍](js-apis-inner-commonEvent-commonEventData.md) 介绍的有所区别,其中 CommonEventData.code 表示任务的状态,目前为 0x40 COMPLETE 或 0x41 FAILED; CommonEventData.data 表示任务的 taskId。
2390e41f4b71Sopenharmony_ci
2391e41f4b71Sopenharmony_ci<!--Del-->
2392e41f4b71Sopenharmony_ci事件配置信息请参考[静态订阅公共事件](../../basic-services/common-event/common-event-static-subscription.md)。<!--DelEnd-->
2393e41f4b71Sopenharmony_ci
2394e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2395e41f4b71Sopenharmony_ci
2396e41f4b71Sopenharmony_ci| 名称 | 值 | 说明        |
2397e41f4b71Sopenharmony_ci| -------- | ------- |-----------|
2398e41f4b71Sopenharmony_ci| COMPLETE | 'ohos.request.event.COMPLETE' | 表示任务完成事件。 |
2399e41f4b71Sopenharmony_ci
2400e41f4b71Sopenharmony_ci## FileSpec<sup>10+</sup> 
2401e41f4b71Sopenharmony_ci表单项的文件信息。
2402e41f4b71Sopenharmony_ci
2403e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2404e41f4b71Sopenharmony_ci
2405e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2406e41f4b71Sopenharmony_ci
2407e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2408e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2409e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径:<br/>-相对路径,位于调用方的缓存路径下,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html"。<br/>-internal协议路径,支持"internal://"及其子路径,internal为调用方(即传入的context)对应路径,"internal://cache"对应context.cacheDir。如"internal://cache/path/to/file.txt"。<br/>-应用沙箱目录,只支持到base及其子目录下,如"/data/storage/el1/base/path/to/file.txt"。<br/>-file协议路径,必须匹配应用包名,只支持到base及其子目录下,如"file://com.example.test/data/storage/el2/base/file.txt"。<br/>-用户公共文件,如"file://media/Photo/path/to/file.img"。仅支持前端任务。 |
2410e41f4b71Sopenharmony_ci| mimeType | string | 否 | 文件的mimetype通过文件名获取。 |
2411e41f4b71Sopenharmony_ci| filename | string | 否 | 文件名,默认值通过路径获取。 |
2412e41f4b71Sopenharmony_ci| extras | object | 否 | 文件信息的附加内容。 |
2413e41f4b71Sopenharmony_ci
2414e41f4b71Sopenharmony_ci
2415e41f4b71Sopenharmony_ci## FormItem<sup>10+</sup> 
2416e41f4b71Sopenharmony_ci任务的表单项信息。
2417e41f4b71Sopenharmony_ci
2418e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2419e41f4b71Sopenharmony_ci
2420e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2421e41f4b71Sopenharmony_ci
2422e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2423e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2424e41f4b71Sopenharmony_ci| name | string | 是 | 表单参数名。 |
2425e41f4b71Sopenharmony_ci| value | string \| [FileSpec](#filespec10) \| Array&lt;[FileSpec](#filespec10)&gt; | 是 | 表单参数值。 |
2426e41f4b71Sopenharmony_ci
2427e41f4b71Sopenharmony_ci
2428e41f4b71Sopenharmony_ci## Config<sup>10+</sup> 
2429e41f4b71Sopenharmony_ci上传/下载任务的配置信息。
2430e41f4b71Sopenharmony_ci
2431e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2432e41f4b71Sopenharmony_ci
2433e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2434e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2435e41f4b71Sopenharmony_ci| action | [Action](#action10) | 是 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2436e41f4b71Sopenharmony_ci| url | string | 是 | 资源地址,其最大长度为2048个字符。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2437e41f4b71Sopenharmony_ci| title | string | 否 | 任务标题,其最大长度为256个字符,默认值为小写的 upload 或 download,与上面的 action 保持一致。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2438e41f4b71Sopenharmony_ci| description | string | 否 | 任务的详细信息,其最大长度为1024个字符,默认值为空字符串。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2439e41f4b71Sopenharmony_ci| mode | [Mode](#mode10) | 否 | 任务模式,默认为后台任务。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2440e41f4b71Sopenharmony_ci| overwrite | boolean | 否 | 下载过程中路径已存在时的解决方案选择,默认为false。<br/>- true,覆盖已存在的文件。<br/>- false,下载失败。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2441e41f4b71Sopenharmony_ci| method | string | 否 | 上传或下载的HTTP标准方法,包括GET、POST和PUT,不区分大小写。<br/>-上传时,使用PUT或POST,默认值为PUT。<br/>-下载时,使用GET或POST,默认值为GET。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2442e41f4b71Sopenharmony_ci| headers | object | 否 | 添加要包含在任务中的HTTP协议标志头。<br/>-对于上传请求,默认的Content-Type为"multipart/form-data"。<br/>-对于下载请求,默认的Content-Type为"application/json"。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2443e41f4b71Sopenharmony_ci| data | string \| Array&lt;[FormItem](#formitem10)&gt; | 否 | -下载时,data为字符串类型,通常使用json(object将被转换为json文本),默认为空。<br/>-上传时,data是表单项数组Array&lt;[FormItem](#formitem10)&gt;,默认为空。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2444e41f4b71Sopenharmony_ci| saveas | string | 否 | 保存下载文件的路径,包括如下几种:<br/>-相对路径,位于调用方的缓存路径下,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html"。<br/>-internal协议路径,支持"internal://"及其子路径,internal为调用方(即传入的context)对应路径,"internal://cache"对应context.cacheDir。如"internal://cache/path/to/file.txt"。<br/>-应用沙箱目录,只支持到base及其子目录下,如"/data/storage/el1/base/path/to/file.txt"。<br/>-file协议路径,必须匹配应用包名,只支持到base及其子目录下,如"file://com.example.test/data/storage/el2/base/file.txt"。<br/>默认为调用方(即传入的context)对应的缓存路径。默认文件名从url的最后一个"/"后截取。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2445e41f4b71Sopenharmony_ci| network | [Network](#network10) | 否 | 网络选项,当前支持无线网络WIFI和蜂窝数据网络CELLULAR,默认为ANY(WIFI或CELLULAR)。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2446e41f4b71Sopenharmony_ci| metered | boolean | 否 | 是否允许在按流量计费的网络中工作,默认为false。<br/>-true:是 <br/>-false:否<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2447e41f4b71Sopenharmony_ci| roaming | boolean | 否 | 是否允许在漫游网络中工作,默认为true。<br/>-true:是 <br/>-false:否<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2448e41f4b71Sopenharmony_ci| retry | boolean | 否 | 是否为后台任务启用自动重试,仅应用于后台任务,默认为true。<br/>-true:是 <br/>-false:否<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2449e41f4b71Sopenharmony_ci| redirect | boolean | 否 | 是否允许重定向,默认为true。<br/>-true:是 <br/>-false:否<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2450e41f4b71Sopenharmony_ci| proxy<sup>12+</sup> | string | 否 | 设置代理地址,其最大长度为512个字符,默认为空。<br/>代理地址格式:"http://\<domain or address\>:\<port\>" |
2451e41f4b71Sopenharmony_ci| index | number | 否 | 任务的路径索引,通常用于任务断点续传,默认为0。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2452e41f4b71Sopenharmony_ci| begins | number | 否 | 文件起点,通常用于断点续传。默认值为0,取值为闭区间。<br/>-下载时,请求读取服务器开始下载文件时的起点位置(http协议中设置"Range"选项)。<br/>-上传时,在上传开始时读取。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2453e41f4b71Sopenharmony_ci| ends | number | 否 | 文件终点,通常用于断点续传。默认值为-1,取值为闭区间。<br/>-下载时,请求读取服务器开始下载文件时的结束位置(http协议中设置"Range"选项)。<br/>-上传时,在上传时结束读取。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2454e41f4b71Sopenharmony_ci| gauge | boolean | 否 | 后台任务的过程进度通知策略,仅应用于后台任务,默认值为false。<br/>-false:代表仅完成或失败的通知。<br/>-true,发出每个进度已完成或失败的通知。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2455e41f4b71Sopenharmony_ci| precise | boolean | 否 | -如果设置为true,在上传/下载无法获取文件大小时任务失败。<br/>-如果设置为false,将文件大小设置为-1时任务继续。<br/>默认值为false。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2456e41f4b71Sopenharmony_ci| token | string | 否 | 当创建了一个带有token的任务后,token则为正常查询期间必须提供的,否则将无法通过查询进行检索。其最小为8个字节,最大为2048个字节。默认为空。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2457e41f4b71Sopenharmony_ci| priority<sup>11+</sup> | number | 否 | 任务的优先级。任务模式相同的情况下,该配置项的数字越小优先级越高,默认值为0。 |
2458e41f4b71Sopenharmony_ci| extras | object | 否 | 配置的附加功能,默认为空。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2459e41f4b71Sopenharmony_ci
2460e41f4b71Sopenharmony_ci## State<sup>10+</sup>  
2461e41f4b71Sopenharmony_ci
2462e41f4b71Sopenharmony_ci定义任务当前的状态。
2463e41f4b71Sopenharmony_ci
2464e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2465e41f4b71Sopenharmony_ci
2466e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2467e41f4b71Sopenharmony_ci
2468e41f4b71Sopenharmony_ci| 名称 | 值 |说明 |
2469e41f4b71Sopenharmony_ci| -------- | -------- |-------- |
2470e41f4b71Sopenharmony_ci| INITIALIZED | 0x00 |通过配置信息([Config](#config10))创建初始化任务。 |
2471e41f4b71Sopenharmony_ci| WAITING | 0x10 |表示任务缺少运行或重试的资源与网络状态不匹配。 |
2472e41f4b71Sopenharmony_ci| RUNNING | 0x20 |表示正在处理的任务。 |
2473e41f4b71Sopenharmony_ci| RETRYING | 0x21 |表示任务至少失败一次,现在正在再次处理中。 |
2474e41f4b71Sopenharmony_ci| PAUSED | 0x30 |表示任务暂停,通常后续会恢复任务。 |
2475e41f4b71Sopenharmony_ci| STOPPED | 0x31 |表示任务停止。 |
2476e41f4b71Sopenharmony_ci| COMPLETED | 0x40 |表示任务完成。 |
2477e41f4b71Sopenharmony_ci| FAILED | 0x41 |表示任务失败。 |
2478e41f4b71Sopenharmony_ci| REMOVED | 0x50 |表示任务移除。 |
2479e41f4b71Sopenharmony_ci
2480e41f4b71Sopenharmony_ci
2481e41f4b71Sopenharmony_ci## Progress<sup>10+</sup> 
2482e41f4b71Sopenharmony_ci任务进度的数据结构。
2483e41f4b71Sopenharmony_ci
2484e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2485e41f4b71Sopenharmony_ci
2486e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2487e41f4b71Sopenharmony_ci
2488e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明                                                                  |
2489e41f4b71Sopenharmony_ci| -------- | -------- | -------- |---------------------------------------------------------------------|
2490e41f4b71Sopenharmony_ci| state | [State](#state10) | 是 | 任务当前的状态。                                                            |
2491e41f4b71Sopenharmony_ci| index | number | 是 | 任务中当前正在处理的文件索引。                                                     |
2492e41f4b71Sopenharmony_ci| processed | number | 是 | 任务中当前文件的已处理数据大小,单位为字节。                                               |
2493e41f4b71Sopenharmony_ci| sizes | Array&lt;number&gt; | 是 | 任务中文件的大小,单位为字节。在下载过程中,若服务器使用 chunk 方式传输导致无法从请求头中获取文件总大小时,sizes 为 -1。 |
2494e41f4b71Sopenharmony_ci| extras | object | 否 | 交互的额外内容,例如来自服务器的响应的header和body。                                     |
2495e41f4b71Sopenharmony_ci
2496e41f4b71Sopenharmony_ci
2497e41f4b71Sopenharmony_ci## Faults<sup>10+</sup>  
2498e41f4b71Sopenharmony_ci
2499e41f4b71Sopenharmony_ci定义任务失败的原因。
2500e41f4b71Sopenharmony_ci
2501e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2502e41f4b71Sopenharmony_ci
2503e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2504e41f4b71Sopenharmony_ci
2505e41f4b71Sopenharmony_ci| 名称 | 值 | 说明                                                                             |
2506e41f4b71Sopenharmony_ci| -------- | -------- |--------------------------------------------------------------------------------|
2507e41f4b71Sopenharmony_ci| OTHERS | 0xFF | 表示其他故障。                                                                        |
2508e41f4b71Sopenharmony_ci| DISCONNECTED | 0x00 | 表示网络断开连接。                                                                      |
2509e41f4b71Sopenharmony_ci| TIMEOUT | 0x10 | 表示任务超时。                                                                        |
2510e41f4b71Sopenharmony_ci| PROTOCOL | 0x20 | 表示协议错误,例如:服务器内部错误(500)、无法处理的数据区间(416)等。                                        |
2511e41f4b71Sopenharmony_ci| PARAM<sup>12+</sup> | 0x30 | 表示参数错误,例如url格式错误等。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。          |
2512e41f4b71Sopenharmony_ci| FSIO | 0x40 | 表示文件系统io错误,例如打开/查找/读取/写入/关闭。                                                   |
2513e41f4b71Sopenharmony_ci| DNS<sup>12+</sup> | 0x50 | 表示DNS解析错误。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                  |
2514e41f4b71Sopenharmony_ci| TCP<sup>12+</sup> | 0x60 | 表示TCP连接错误。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。              |
2515e41f4b71Sopenharmony_ci| SSL<sup>12+</sup> | 0x70 | 表示SSL连接错误,例如证书错误、证书校验失败错误等。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2516e41f4b71Sopenharmony_ci| REDIRECT<sup>12+</sup> | 0x80 | 表示重定向错误。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                    |
2517e41f4b71Sopenharmony_ci
2518e41f4b71Sopenharmony_ci> **说明:**
2519e41f4b71Sopenharmony_ci>
2520e41f4b71Sopenharmony_ci> API version 12及以下版本,只支持串行的尝试连接域名相关ip,且不支持单个ip的连接时间控制,如果DNS返回的首个ip是阻塞的,可能握手超时造成TIMEOUT错误。
2521e41f4b71Sopenharmony_ci
2522e41f4b71Sopenharmony_ci## Filter<sup>10+</sup>
2523e41f4b71Sopenharmony_ci过滤条件。
2524e41f4b71Sopenharmony_ci
2525e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2526e41f4b71Sopenharmony_ci
2527e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2528e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2529e41f4b71Sopenharmony_ci| before | number | 否 | 结束的Unix时间戳(毫秒),默认为调用时刻。 |
2530e41f4b71Sopenharmony_ci| after | number | 否 | 开始的Unix时间戳(毫秒),默认值为调用时刻减24小时。 |
2531e41f4b71Sopenharmony_ci| state | [State](#state10) | 否 | 指定任务的状态。 |
2532e41f4b71Sopenharmony_ci| action | [Action](#action10) | 否 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。 |
2533e41f4b71Sopenharmony_ci| mode | [Mode](#mode10) | 否 | 任务模式。<br/>-FOREGROUND表示前端任务。<br/>-BACKGROUND表示后台任务。<br/>-如果未填写,则查询所有任务。 |
2534e41f4b71Sopenharmony_ci
2535e41f4b71Sopenharmony_ci## TaskInfo<sup>10+</sup> 
2536e41f4b71Sopenharmony_ci查询结果的任务信息数据结构,提供普通查询和系统查询,两种字段的可见范围不同。
2537e41f4b71Sopenharmony_ci
2538e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2539e41f4b71Sopenharmony_ci
2540e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2541e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2542e41f4b71Sopenharmony_ci| saveas | string | 否 | 保存下载文件的路径。 |
2543e41f4b71Sopenharmony_ci| url | string | 否 | 任务的url。<br/>- 通过[request.agent.show<sup>10+</sup>](#requestagentshow10-1)、[request.agent.touch<sup>10+</sup>](#requestagenttouch10-1)进行查询。 |
2544e41f4b71Sopenharmony_ci| data | string \| Array&lt;[FormItem](#formitem10)&gt; | 否 | 任务值。<br/>- 通过[request.agent.show<sup>10+</sup>](#requestagentshow10-1)、[request.agent.touch<sup>10+</sup>](#requestagenttouch10-1)。 |
2545e41f4b71Sopenharmony_ci| tid | string | 是 | 任务id。 |
2546e41f4b71Sopenharmony_ci| title | string | 是 | 任务标题。 |
2547e41f4b71Sopenharmony_ci| description | string | 是 | 任务描述。 |
2548e41f4b71Sopenharmony_ci| action | [Action](#action10) | 是 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。 |
2549e41f4b71Sopenharmony_ci| mode | [Mode](#mode10) | 是 | 指定任务模式。<br/>-FOREGROUND表示前端任务。<br/>-BACKGROUND表示后台任务。 |
2550e41f4b71Sopenharmony_ci| priority<sup>11+</sup> | number | 是 | 任务配置中的优先级。前端任务的优先级比后台任务高。相同模式的任务,数字越小优先级越高。 |
2551e41f4b71Sopenharmony_ci| mimeType | string | 是 | 任务配置中的mimetype。 |
2552e41f4b71Sopenharmony_ci| progress | [Progress](#progress10) | 是 | 任务的过程进度。 |
2553e41f4b71Sopenharmony_ci| gauge | boolean | 是 | 后台任务的进度通知策略。 |
2554e41f4b71Sopenharmony_ci| ctime | number | 是 | 创建任务的Unix时间戳(毫秒),由当前设备的系统生成。<br/>说明:使用[request.agent.search<sup>10+</sup>](#requestagentsearch10-1)进行查询时,该值需处于[after,before]区间内才可正常查询到任务id,before和after信息详见[Filter](#filter10)。
2555e41f4b71Sopenharmony_ci| mtime | number | 是 | 任务状态改变时的Unix时间戳(毫秒),由当前设备的系统生成。|
2556e41f4b71Sopenharmony_ci| retry | boolean | 是 | 任务的重试开关,仅应用于后台任务。 |
2557e41f4b71Sopenharmony_ci| tries | number | 是 | 任务的尝试次数。 |
2558e41f4b71Sopenharmony_ci| faults | [Faults](#faults10) | 是 | 任务的失败原因。|
2559e41f4b71Sopenharmony_ci| reason | string | 是 | 等待/失败/停止/暂停任务的原因。|
2560e41f4b71Sopenharmony_ci| extras | object | 否 | 任务的额外部分。|
2561e41f4b71Sopenharmony_ci
2562e41f4b71Sopenharmony_ci
2563e41f4b71Sopenharmony_ci## HttpResponse<sup>12+</sup> 
2564e41f4b71Sopenharmony_ci任务响应头的数据结构。
2565e41f4b71Sopenharmony_ci
2566e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2567e41f4b71Sopenharmony_ci
2568e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2569e41f4b71Sopenharmony_ci
2570e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2571e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2572e41f4b71Sopenharmony_ci| version | string | 是 | Http版本。 |
2573e41f4b71Sopenharmony_ci| statusCode | number | 是 | Http响应状态码。 |
2574e41f4b71Sopenharmony_ci| reason | string | 是 | Http响应原因。|
2575e41f4b71Sopenharmony_ci| headers | Map&lt;string, Array&lt;string&gt;&gt; | 是 | Http响应头部。 |
2576e41f4b71Sopenharmony_ci
2577e41f4b71Sopenharmony_ci## Task<sup>10+</sup> 
2578e41f4b71Sopenharmony_ci上传或下载任务。使用该方法前需要先获取Task对象,promise形式通过[request.agent.create<sup>10+</sup>](#requestagentcreate10-1)获取,callback形式通过[request.agent.create<sup>10+</sup>](#requestagentcreate10)获取。
2579e41f4b71Sopenharmony_ci
2580e41f4b71Sopenharmony_ci### 属性
2581e41f4b71Sopenharmony_ci包括任务id和任务的配置信息。
2582e41f4b71Sopenharmony_ci
2583e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2584e41f4b71Sopenharmony_ci
2585e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2586e41f4b71Sopenharmony_ci
2587e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 |
2588e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
2589e41f4b71Sopenharmony_ci| tid | string | 是 | 任务id,在系统上是唯一的,由系统自动生成。 |
2590e41f4b71Sopenharmony_ci| config | [Config](#config10) | 是 | 任务的配置信息。 |
2591e41f4b71Sopenharmony_ci
2592e41f4b71Sopenharmony_ci
2593e41f4b71Sopenharmony_ci### on('progress')<sup>10+</sup>
2594e41f4b71Sopenharmony_ci
2595e41f4b71Sopenharmony_cion(event: 'progress', callback: (progress: [Progress](#progress10)) =&gt; void): void
2596e41f4b71Sopenharmony_ci
2597e41f4b71Sopenharmony_ci订阅任务进度的事件,异步方法,使用callback形式返回结果。
2598e41f4b71Sopenharmony_ci
2599e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2600e41f4b71Sopenharmony_ci
2601e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2602e41f4b71Sopenharmony_ci
2603e41f4b71Sopenharmony_ci**参数:**
2604e41f4b71Sopenharmony_ci
2605e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2606e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2607e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'progress',表示任务进度。 |
2608e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。|
2609e41f4b71Sopenharmony_ci
2610e41f4b71Sopenharmony_ci**错误码:**
2611e41f4b71Sopenharmony_ci
2612e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2613e41f4b71Sopenharmony_ci
2614e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2615e41f4b71Sopenharmony_ci  | -------- | -------- |
2616e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2617e41f4b71Sopenharmony_ci
2618e41f4b71Sopenharmony_ci**示例:**
2619e41f4b71Sopenharmony_ci
2620e41f4b71Sopenharmony_ci  ```ts
2621e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2622e41f4b71Sopenharmony_ci
2623e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2624e41f4b71Sopenharmony_ci    name: "taskOnTest",
2625e41f4b71Sopenharmony_ci    value: {
2626e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
2627e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
2628e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
2629e41f4b71Sopenharmony_ci    }
2630e41f4b71Sopenharmony_ci  }];
2631e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
2632e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
2633e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
2634e41f4b71Sopenharmony_ci    title: 'taskOnTest',
2635e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
2636e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
2637e41f4b71Sopenharmony_ci    overwrite: false,
2638e41f4b71Sopenharmony_ci    method: "PUT",
2639e41f4b71Sopenharmony_ci    data: attachments,
2640e41f4b71Sopenharmony_ci    saveas: "./",
2641e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
2642e41f4b71Sopenharmony_ci    metered: false,
2643e41f4b71Sopenharmony_ci    roaming: true,
2644e41f4b71Sopenharmony_ci    retry: true,
2645e41f4b71Sopenharmony_ci    redirect: true,
2646e41f4b71Sopenharmony_ci    index: 0,
2647e41f4b71Sopenharmony_ci    begins: 0,
2648e41f4b71Sopenharmony_ci    ends: -1,
2649e41f4b71Sopenharmony_ci    gauge: false,
2650e41f4b71Sopenharmony_ci    precise: false,
2651e41f4b71Sopenharmony_ci    token: "it is a secret"
2652e41f4b71Sopenharmony_ci  };
2653e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
2654e41f4b71Sopenharmony_ci    console.info('upload task progress.');
2655e41f4b71Sopenharmony_ci  };
2656e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
2657e41f4b71Sopenharmony_ci    task.on('progress', createOnCallback);
2658e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2659e41f4b71Sopenharmony_ci    task.start();
2660e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
2661e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2662e41f4b71Sopenharmony_ci  });
2663e41f4b71Sopenharmony_ci  ```
2664e41f4b71Sopenharmony_ci
2665e41f4b71Sopenharmony_ci> **说明:**
2666e41f4b71Sopenharmony_ci>
2667e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2668e41f4b71Sopenharmony_ci
2669e41f4b71Sopenharmony_ci### on('completed')<sup>10+</sup>
2670e41f4b71Sopenharmony_ci
2671e41f4b71Sopenharmony_cion(event: 'completed', callback: (progress: [Progress](#progress10)) =&gt; void): void
2672e41f4b71Sopenharmony_ci
2673e41f4b71Sopenharmony_ci订阅任务完成事件,异步方法,使用callback形式返回结果。
2674e41f4b71Sopenharmony_ci
2675e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2676e41f4b71Sopenharmony_ci
2677e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2678e41f4b71Sopenharmony_ci
2679e41f4b71Sopenharmony_ci**参数:**
2680e41f4b71Sopenharmony_ci
2681e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2682e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2683e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'completed',表示任务完成。 |
2684e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2685e41f4b71Sopenharmony_ci
2686e41f4b71Sopenharmony_ci**错误码:**
2687e41f4b71Sopenharmony_ci
2688e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2689e41f4b71Sopenharmony_ci
2690e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2691e41f4b71Sopenharmony_ci  | -------- | -------- |
2692e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2693e41f4b71Sopenharmony_ci
2694e41f4b71Sopenharmony_ci**示例:**
2695e41f4b71Sopenharmony_ci
2696e41f4b71Sopenharmony_ci  ```ts
2697e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2698e41f4b71Sopenharmony_ci
2699e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2700e41f4b71Sopenharmony_ci    name: "taskOnTest",
2701e41f4b71Sopenharmony_ci    value: {
2702e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
2703e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
2704e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
2705e41f4b71Sopenharmony_ci    }
2706e41f4b71Sopenharmony_ci  }];
2707e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
2708e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
2709e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
2710e41f4b71Sopenharmony_ci    title: 'taskOnTest',
2711e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
2712e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
2713e41f4b71Sopenharmony_ci    overwrite: false,
2714e41f4b71Sopenharmony_ci    method: "PUT",
2715e41f4b71Sopenharmony_ci    data: attachments,
2716e41f4b71Sopenharmony_ci    saveas: "./",
2717e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
2718e41f4b71Sopenharmony_ci    metered: false,
2719e41f4b71Sopenharmony_ci    roaming: true,
2720e41f4b71Sopenharmony_ci    retry: true,
2721e41f4b71Sopenharmony_ci    redirect: true,
2722e41f4b71Sopenharmony_ci    index: 0,
2723e41f4b71Sopenharmony_ci    begins: 0,
2724e41f4b71Sopenharmony_ci    ends: -1,
2725e41f4b71Sopenharmony_ci    gauge: false,
2726e41f4b71Sopenharmony_ci    precise: false,
2727e41f4b71Sopenharmony_ci    token: "it is a secret"
2728e41f4b71Sopenharmony_ci  };
2729e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
2730e41f4b71Sopenharmony_ci    console.info('upload task completed.');
2731e41f4b71Sopenharmony_ci  };
2732e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
2733e41f4b71Sopenharmony_ci    task.on('completed', createOnCallback);
2734e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2735e41f4b71Sopenharmony_ci    task.start();
2736e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
2737e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2738e41f4b71Sopenharmony_ci  });
2739e41f4b71Sopenharmony_ci  ```
2740e41f4b71Sopenharmony_ci
2741e41f4b71Sopenharmony_ci> **说明:**
2742e41f4b71Sopenharmony_ci>
2743e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2744e41f4b71Sopenharmony_ci
2745e41f4b71Sopenharmony_ci### on('failed')<sup>10+</sup>
2746e41f4b71Sopenharmony_ci
2747e41f4b71Sopenharmony_cion(event: 'failed', callback: (progress: [Progress](#progress10)) =&gt; void): void
2748e41f4b71Sopenharmony_ci
2749e41f4b71Sopenharmony_ci订阅任务失败事件,异步方法,使用callback形式返回结果。可通过调用[request.agent.show<sup>10+</sup>](#requestagentshow10-1)查看错误原因。
2750e41f4b71Sopenharmony_ci
2751e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2752e41f4b71Sopenharmony_ci
2753e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2754e41f4b71Sopenharmony_ci
2755e41f4b71Sopenharmony_ci**参数:**
2756e41f4b71Sopenharmony_ci
2757e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2758e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2759e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'failed',表示任务失败。 |
2760e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2761e41f4b71Sopenharmony_ci
2762e41f4b71Sopenharmony_ci**错误码:**
2763e41f4b71Sopenharmony_ci
2764e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
2765e41f4b71Sopenharmony_ci
2766e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2767e41f4b71Sopenharmony_ci  | -------- | -------- |
2768e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2769e41f4b71Sopenharmony_ci
2770e41f4b71Sopenharmony_ci**示例:**
2771e41f4b71Sopenharmony_ci
2772e41f4b71Sopenharmony_ci  ```ts
2773e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2774e41f4b71Sopenharmony_ci
2775e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2776e41f4b71Sopenharmony_ci    name: "taskOnTest",
2777e41f4b71Sopenharmony_ci    value: {
2778e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
2779e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
2780e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
2781e41f4b71Sopenharmony_ci    }
2782e41f4b71Sopenharmony_ci  }];
2783e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
2784e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
2785e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
2786e41f4b71Sopenharmony_ci    title: 'taskOnTest',
2787e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
2788e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
2789e41f4b71Sopenharmony_ci    overwrite: false,
2790e41f4b71Sopenharmony_ci    method: "PUT",
2791e41f4b71Sopenharmony_ci    data: attachments,
2792e41f4b71Sopenharmony_ci    saveas: "./",
2793e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
2794e41f4b71Sopenharmony_ci    metered: false,
2795e41f4b71Sopenharmony_ci    roaming: true,
2796e41f4b71Sopenharmony_ci    retry: true,
2797e41f4b71Sopenharmony_ci    redirect: true,
2798e41f4b71Sopenharmony_ci    index: 0,
2799e41f4b71Sopenharmony_ci    begins: 0,
2800e41f4b71Sopenharmony_ci    ends: -1,
2801e41f4b71Sopenharmony_ci    gauge: false,
2802e41f4b71Sopenharmony_ci    precise: false,
2803e41f4b71Sopenharmony_ci    token: "it is a secret"
2804e41f4b71Sopenharmony_ci  };
2805e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
2806e41f4b71Sopenharmony_ci    console.info('upload task failed.');
2807e41f4b71Sopenharmony_ci  };
2808e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
2809e41f4b71Sopenharmony_ci    task.on('failed', createOnCallback);
2810e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2811e41f4b71Sopenharmony_ci    task.start();
2812e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
2813e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2814e41f4b71Sopenharmony_ci  });
2815e41f4b71Sopenharmony_ci  ```
2816e41f4b71Sopenharmony_ci
2817e41f4b71Sopenharmony_ci> **说明:**
2818e41f4b71Sopenharmony_ci>
2819e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2820e41f4b71Sopenharmony_ci
2821e41f4b71Sopenharmony_ci### on('pause')<sup>11+</sup>
2822e41f4b71Sopenharmony_ci
2823e41f4b71Sopenharmony_cion(event: 'pause', callback: (progress: [Progress](#progress10)) =&gt; void): void
2824e41f4b71Sopenharmony_ci
2825e41f4b71Sopenharmony_ci订阅任务暂停事件,异步方法,使用callback形式返回结果。
2826e41f4b71Sopenharmony_ci
2827e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2828e41f4b71Sopenharmony_ci
2829e41f4b71Sopenharmony_ci**参数:**
2830e41f4b71Sopenharmony_ci
2831e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2832e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2833e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'pause',表示任务暂停。 |
2834e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2835e41f4b71Sopenharmony_ci
2836e41f4b71Sopenharmony_ci**错误码:**
2837e41f4b71Sopenharmony_ci
2838e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
2839e41f4b71Sopenharmony_ci
2840e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2841e41f4b71Sopenharmony_ci  | -------- | -------- |
2842e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2843e41f4b71Sopenharmony_ci
2844e41f4b71Sopenharmony_ci**示例:**
2845e41f4b71Sopenharmony_ci
2846e41f4b71Sopenharmony_ci  ```ts
2847e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2848e41f4b71Sopenharmony_ci
2849e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2850e41f4b71Sopenharmony_ci    name: "taskOnTest",
2851e41f4b71Sopenharmony_ci    value: {
2852e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
2853e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
2854e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
2855e41f4b71Sopenharmony_ci    }
2856e41f4b71Sopenharmony_ci  }];
2857e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
2858e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
2859e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
2860e41f4b71Sopenharmony_ci    title: 'taskOnTest',
2861e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
2862e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
2863e41f4b71Sopenharmony_ci    overwrite: false,
2864e41f4b71Sopenharmony_ci    method: "PUT",
2865e41f4b71Sopenharmony_ci    data: attachments,
2866e41f4b71Sopenharmony_ci    saveas: "./",
2867e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
2868e41f4b71Sopenharmony_ci    metered: false,
2869e41f4b71Sopenharmony_ci    roaming: true,
2870e41f4b71Sopenharmony_ci    retry: true,
2871e41f4b71Sopenharmony_ci    redirect: true,
2872e41f4b71Sopenharmony_ci    index: 0,
2873e41f4b71Sopenharmony_ci    begins: 0,
2874e41f4b71Sopenharmony_ci    ends: -1,
2875e41f4b71Sopenharmony_ci    gauge: false,
2876e41f4b71Sopenharmony_ci    precise: false,
2877e41f4b71Sopenharmony_ci    token: "it is a secret"
2878e41f4b71Sopenharmony_ci  };
2879e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
2880e41f4b71Sopenharmony_ci    console.info('upload task pause.');
2881e41f4b71Sopenharmony_ci  };
2882e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
2883e41f4b71Sopenharmony_ci    task.on('pause', createOnCallback);
2884e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2885e41f4b71Sopenharmony_ci    task.start();
2886e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
2887e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2888e41f4b71Sopenharmony_ci  });
2889e41f4b71Sopenharmony_ci  ```
2890e41f4b71Sopenharmony_ci
2891e41f4b71Sopenharmony_ci> **说明:**
2892e41f4b71Sopenharmony_ci>
2893e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2894e41f4b71Sopenharmony_ci
2895e41f4b71Sopenharmony_ci### on('resume')<sup>11+</sup>
2896e41f4b71Sopenharmony_ci
2897e41f4b71Sopenharmony_cion(event: 'resume', callback: (progress: [Progress](#progress10)) =&gt; void): void
2898e41f4b71Sopenharmony_ci
2899e41f4b71Sopenharmony_ci订阅任务恢复事件,异步方法,使用callback形式返回结果。
2900e41f4b71Sopenharmony_ci
2901e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2902e41f4b71Sopenharmony_ci
2903e41f4b71Sopenharmony_ci**参数:**
2904e41f4b71Sopenharmony_ci
2905e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2906e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2907e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'resume',表示任务恢复。 |
2908e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2909e41f4b71Sopenharmony_ci
2910e41f4b71Sopenharmony_ci**错误码:**
2911e41f4b71Sopenharmony_ci
2912e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
2913e41f4b71Sopenharmony_ci
2914e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2915e41f4b71Sopenharmony_ci  | -------- | -------- |
2916e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2917e41f4b71Sopenharmony_ci
2918e41f4b71Sopenharmony_ci**示例:**
2919e41f4b71Sopenharmony_ci
2920e41f4b71Sopenharmony_ci  ```ts
2921e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2922e41f4b71Sopenharmony_ci
2923e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2924e41f4b71Sopenharmony_ci    name: "taskOnTest",
2925e41f4b71Sopenharmony_ci    value: {
2926e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
2927e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
2928e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
2929e41f4b71Sopenharmony_ci    }
2930e41f4b71Sopenharmony_ci  }];
2931e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
2932e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
2933e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
2934e41f4b71Sopenharmony_ci    title: 'taskOnTest',
2935e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
2936e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
2937e41f4b71Sopenharmony_ci    overwrite: false,
2938e41f4b71Sopenharmony_ci    method: "PUT",
2939e41f4b71Sopenharmony_ci    data: attachments,
2940e41f4b71Sopenharmony_ci    saveas: "./",
2941e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
2942e41f4b71Sopenharmony_ci    metered: false,
2943e41f4b71Sopenharmony_ci    roaming: true,
2944e41f4b71Sopenharmony_ci    retry: true,
2945e41f4b71Sopenharmony_ci    redirect: true,
2946e41f4b71Sopenharmony_ci    index: 0,
2947e41f4b71Sopenharmony_ci    begins: 0,
2948e41f4b71Sopenharmony_ci    ends: -1,
2949e41f4b71Sopenharmony_ci    gauge: false,
2950e41f4b71Sopenharmony_ci    precise: false,
2951e41f4b71Sopenharmony_ci    token: "it is a secret"
2952e41f4b71Sopenharmony_ci  };
2953e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
2954e41f4b71Sopenharmony_ci    console.info('upload task resume.');
2955e41f4b71Sopenharmony_ci  };
2956e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
2957e41f4b71Sopenharmony_ci    task.on('resume', createOnCallback);
2958e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2959e41f4b71Sopenharmony_ci    task.start();
2960e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
2961e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2962e41f4b71Sopenharmony_ci  });
2963e41f4b71Sopenharmony_ci  ```
2964e41f4b71Sopenharmony_ci
2965e41f4b71Sopenharmony_ci> **说明:**
2966e41f4b71Sopenharmony_ci>
2967e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2968e41f4b71Sopenharmony_ci
2969e41f4b71Sopenharmony_ci### on('remove')<sup>11+</sup>
2970e41f4b71Sopenharmony_ci
2971e41f4b71Sopenharmony_cion(event: 'remove', callback: (progress: [Progress](#progress10)) =&gt; void): void
2972e41f4b71Sopenharmony_ci
2973e41f4b71Sopenharmony_ci订阅任务删除事件,异步方法,使用callback形式返回结果。
2974e41f4b71Sopenharmony_ci
2975e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
2976e41f4b71Sopenharmony_ci
2977e41f4b71Sopenharmony_ci**参数:**
2978e41f4b71Sopenharmony_ci
2979e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
2980e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
2981e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'remove',表示任务删除。 |
2982e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2983e41f4b71Sopenharmony_ci
2984e41f4b71Sopenharmony_ci**错误码:**
2985e41f4b71Sopenharmony_ci
2986e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
2987e41f4b71Sopenharmony_ci
2988e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
2989e41f4b71Sopenharmony_ci  | -------- | -------- |
2990e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
2991e41f4b71Sopenharmony_ci
2992e41f4b71Sopenharmony_ci**示例:**
2993e41f4b71Sopenharmony_ci
2994e41f4b71Sopenharmony_ci  ```ts
2995e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2996e41f4b71Sopenharmony_ci
2997e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
2998e41f4b71Sopenharmony_ci    name: "taskOnTest",
2999e41f4b71Sopenharmony_ci    value: {
3000e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
3001e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3002e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
3003e41f4b71Sopenharmony_ci    }
3004e41f4b71Sopenharmony_ci  }];
3005e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3006e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3007e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3008e41f4b71Sopenharmony_ci    title: 'taskOnTest',
3009e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3010e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3011e41f4b71Sopenharmony_ci    overwrite: false,
3012e41f4b71Sopenharmony_ci    method: "PUT",
3013e41f4b71Sopenharmony_ci    data: attachments,
3014e41f4b71Sopenharmony_ci    saveas: "./",
3015e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3016e41f4b71Sopenharmony_ci    metered: false,
3017e41f4b71Sopenharmony_ci    roaming: true,
3018e41f4b71Sopenharmony_ci    retry: true,
3019e41f4b71Sopenharmony_ci    redirect: true,
3020e41f4b71Sopenharmony_ci    index: 0,
3021e41f4b71Sopenharmony_ci    begins: 0,
3022e41f4b71Sopenharmony_ci    ends: -1,
3023e41f4b71Sopenharmony_ci    gauge: false,
3024e41f4b71Sopenharmony_ci    precise: false,
3025e41f4b71Sopenharmony_ci    token: "it is a secret"
3026e41f4b71Sopenharmony_ci  };
3027e41f4b71Sopenharmony_ci  let createOnCallback = (progress: request.agent.Progress) => {
3028e41f4b71Sopenharmony_ci    console.info('upload task remove.');
3029e41f4b71Sopenharmony_ci  };
3030e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3031e41f4b71Sopenharmony_ci    task.on('remove', createOnCallback);
3032e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3033e41f4b71Sopenharmony_ci    task.start();
3034e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3035e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3036e41f4b71Sopenharmony_ci  });
3037e41f4b71Sopenharmony_ci  ```
3038e41f4b71Sopenharmony_ci
3039e41f4b71Sopenharmony_ci> **说明:**
3040e41f4b71Sopenharmony_ci>
3041e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3042e41f4b71Sopenharmony_ci
3043e41f4b71Sopenharmony_ci### on('response')<sup>12+</sup>
3044e41f4b71Sopenharmony_ci
3045e41f4b71Sopenharmony_cion(event: 'response', callback: Callback&lt;HttpResponse&gt;): void
3046e41f4b71Sopenharmony_ci
3047e41f4b71Sopenharmony_ci订阅任务响应头,异步方法,使用callback形式返回结果。
3048e41f4b71Sopenharmony_ci
3049e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3050e41f4b71Sopenharmony_ci
3051e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3052e41f4b71Sopenharmony_ci
3053e41f4b71Sopenharmony_ci**参数:**
3054e41f4b71Sopenharmony_ci
3055e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3056e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3057e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'response',表示任务响应。 |
3058e41f4b71Sopenharmony_ci  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务响应头的数据结构。 |
3059e41f4b71Sopenharmony_ci
3060e41f4b71Sopenharmony_ci**错误码:**
3061e41f4b71Sopenharmony_ci
3062e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
3063e41f4b71Sopenharmony_ci
3064e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3065e41f4b71Sopenharmony_ci  | -------- | -------- |
3066e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3067e41f4b71Sopenharmony_ci
3068e41f4b71Sopenharmony_ci**示例:**
3069e41f4b71Sopenharmony_ci
3070e41f4b71Sopenharmony_ci  ```ts
3071e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3072e41f4b71Sopenharmony_ci
3073e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3074e41f4b71Sopenharmony_ci    name: "taskOnTest",
3075e41f4b71Sopenharmony_ci    value: {
3076e41f4b71Sopenharmony_ci      filename: "taskOnTest.avi",
3077e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3078e41f4b71Sopenharmony_ci      path: "./taskOnTest.avi",
3079e41f4b71Sopenharmony_ci    }
3080e41f4b71Sopenharmony_ci  }];
3081e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3082e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3083e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3084e41f4b71Sopenharmony_ci    title: 'taskOnTest',
3085e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3086e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3087e41f4b71Sopenharmony_ci    overwrite: false,
3088e41f4b71Sopenharmony_ci    method: "PUT",
3089e41f4b71Sopenharmony_ci    data: attachments,
3090e41f4b71Sopenharmony_ci    saveas: "./",
3091e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3092e41f4b71Sopenharmony_ci    metered: false,
3093e41f4b71Sopenharmony_ci    roaming: true,
3094e41f4b71Sopenharmony_ci    retry: true,
3095e41f4b71Sopenharmony_ci    redirect: true,
3096e41f4b71Sopenharmony_ci    index: 0,
3097e41f4b71Sopenharmony_ci    begins: 0,
3098e41f4b71Sopenharmony_ci    ends: -1,
3099e41f4b71Sopenharmony_ci    gauge: false,
3100e41f4b71Sopenharmony_ci    precise: false,
3101e41f4b71Sopenharmony_ci    token: "it is a secret"
3102e41f4b71Sopenharmony_ci  };
3103e41f4b71Sopenharmony_ci  let createOnCallback = (response: request.agent.HttpResponse) => {
3104e41f4b71Sopenharmony_ci    console.info('upload task response.');
3105e41f4b71Sopenharmony_ci  };
3106e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3107e41f4b71Sopenharmony_ci    task.on('response', createOnCallback);
3108e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3109e41f4b71Sopenharmony_ci    task.start();
3110e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3111e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3112e41f4b71Sopenharmony_ci  });
3113e41f4b71Sopenharmony_ci  ```
3114e41f4b71Sopenharmony_ci
3115e41f4b71Sopenharmony_ci> **说明:**
3116e41f4b71Sopenharmony_ci>
3117e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3118e41f4b71Sopenharmony_ci
3119e41f4b71Sopenharmony_ci### off('progress')<sup>10+</sup>
3120e41f4b71Sopenharmony_ci
3121e41f4b71Sopenharmony_cioff(event: 'progress', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3122e41f4b71Sopenharmony_ci
3123e41f4b71Sopenharmony_ci取消订阅任务进度事件。
3124e41f4b71Sopenharmony_ci
3125e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3126e41f4b71Sopenharmony_ci
3127e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3128e41f4b71Sopenharmony_ci
3129e41f4b71Sopenharmony_ci**参数:**
3130e41f4b71Sopenharmony_ci
3131e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3132e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3133e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'progress',表示任务进度。 |
3134e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3135e41f4b71Sopenharmony_ci
3136e41f4b71Sopenharmony_ci**错误码:**
3137e41f4b71Sopenharmony_ci
3138e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3139e41f4b71Sopenharmony_ci
3140e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3141e41f4b71Sopenharmony_ci  | -------- | -------- |
3142e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3143e41f4b71Sopenharmony_ci
3144e41f4b71Sopenharmony_ci**示例:**
3145e41f4b71Sopenharmony_ci
3146e41f4b71Sopenharmony_ci  ```ts
3147e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3148e41f4b71Sopenharmony_ci
3149e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3150e41f4b71Sopenharmony_ci    name: "taskOffTest",
3151e41f4b71Sopenharmony_ci    value: {
3152e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3153e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3154e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3155e41f4b71Sopenharmony_ci    }
3156e41f4b71Sopenharmony_ci  }];
3157e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3158e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3159e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3160e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3161e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3162e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3163e41f4b71Sopenharmony_ci    overwrite: false,
3164e41f4b71Sopenharmony_ci    method: "PUT",
3165e41f4b71Sopenharmony_ci    data: attachments,
3166e41f4b71Sopenharmony_ci    saveas: "./",
3167e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3168e41f4b71Sopenharmony_ci    metered: false,
3169e41f4b71Sopenharmony_ci    roaming: true,
3170e41f4b71Sopenharmony_ci    retry: true,
3171e41f4b71Sopenharmony_ci    redirect: true,
3172e41f4b71Sopenharmony_ci    index: 0,
3173e41f4b71Sopenharmony_ci    begins: 0,
3174e41f4b71Sopenharmony_ci    ends: -1,
3175e41f4b71Sopenharmony_ci    gauge: false,
3176e41f4b71Sopenharmony_ci    precise: false,
3177e41f4b71Sopenharmony_ci    token: "it is a secret"
3178e41f4b71Sopenharmony_ci  };
3179e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3180e41f4b71Sopenharmony_ci    console.info('upload task progress.');
3181e41f4b71Sopenharmony_ci  };
3182e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3183e41f4b71Sopenharmony_ci    console.info('upload task progress.');
3184e41f4b71Sopenharmony_ci  };
3185e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3186e41f4b71Sopenharmony_ci    task.on('progress', createOffCallback1);
3187e41f4b71Sopenharmony_ci    task.on('progress', createOffCallback2);
3188e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3189e41f4b71Sopenharmony_ci    task.off('progress', createOffCallback1);
3190e41f4b71Sopenharmony_ci    //表示取消订阅任务进度的所有回调
3191e41f4b71Sopenharmony_ci    task.off('progress');
3192e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3193e41f4b71Sopenharmony_ci    task.start();
3194e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3195e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3196e41f4b71Sopenharmony_ci  });
3197e41f4b71Sopenharmony_ci  ```
3198e41f4b71Sopenharmony_ci
3199e41f4b71Sopenharmony_ci> **说明:**
3200e41f4b71Sopenharmony_ci>
3201e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3202e41f4b71Sopenharmony_ci
3203e41f4b71Sopenharmony_ci### off('completed')<sup>10+</sup>
3204e41f4b71Sopenharmony_ci
3205e41f4b71Sopenharmony_cioff(event: 'completed', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3206e41f4b71Sopenharmony_ci
3207e41f4b71Sopenharmony_ci取消订阅任务完成事件。
3208e41f4b71Sopenharmony_ci
3209e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3210e41f4b71Sopenharmony_ci
3211e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3212e41f4b71Sopenharmony_ci
3213e41f4b71Sopenharmony_ci**参数:**
3214e41f4b71Sopenharmony_ci
3215e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3216e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3217e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'completed',表示任务完成。 |
3218e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3219e41f4b71Sopenharmony_ci
3220e41f4b71Sopenharmony_ci**错误码:**
3221e41f4b71Sopenharmony_ci
3222e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3223e41f4b71Sopenharmony_ci
3224e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3225e41f4b71Sopenharmony_ci  | -------- | -------- |
3226e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3227e41f4b71Sopenharmony_ci
3228e41f4b71Sopenharmony_ci**示例:**
3229e41f4b71Sopenharmony_ci
3230e41f4b71Sopenharmony_ci  ```ts
3231e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3232e41f4b71Sopenharmony_ci
3233e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3234e41f4b71Sopenharmony_ci    name: "taskOffTest",
3235e41f4b71Sopenharmony_ci    value: {
3236e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3237e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3238e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3239e41f4b71Sopenharmony_ci    }
3240e41f4b71Sopenharmony_ci  }];
3241e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3242e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3243e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3244e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3245e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3246e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3247e41f4b71Sopenharmony_ci    overwrite: false,
3248e41f4b71Sopenharmony_ci    method: "PUT",
3249e41f4b71Sopenharmony_ci    data: attachments,
3250e41f4b71Sopenharmony_ci    saveas: "./",
3251e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3252e41f4b71Sopenharmony_ci    metered: false,
3253e41f4b71Sopenharmony_ci    roaming: true,
3254e41f4b71Sopenharmony_ci    retry: true,
3255e41f4b71Sopenharmony_ci    redirect: true,
3256e41f4b71Sopenharmony_ci    index: 0,
3257e41f4b71Sopenharmony_ci    begins: 0,
3258e41f4b71Sopenharmony_ci    ends: -1,
3259e41f4b71Sopenharmony_ci    gauge: false,
3260e41f4b71Sopenharmony_ci    precise: false,
3261e41f4b71Sopenharmony_ci    token: "it is a secret"
3262e41f4b71Sopenharmony_ci  };
3263e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3264e41f4b71Sopenharmony_ci    console.info('upload task completed.');
3265e41f4b71Sopenharmony_ci  };
3266e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3267e41f4b71Sopenharmony_ci    console.info('upload task completed.');
3268e41f4b71Sopenharmony_ci  };
3269e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3270e41f4b71Sopenharmony_ci    task.on('completed', createOffCallback1);
3271e41f4b71Sopenharmony_ci    task.on('completed', createOffCallback2);
3272e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3273e41f4b71Sopenharmony_ci    task.off('completed', createOffCallback1);
3274e41f4b71Sopenharmony_ci    //表示取消订阅任务完成的所有回调
3275e41f4b71Sopenharmony_ci    task.off('completed');
3276e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3277e41f4b71Sopenharmony_ci    task.start();
3278e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3279e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3280e41f4b71Sopenharmony_ci  });
3281e41f4b71Sopenharmony_ci  ```
3282e41f4b71Sopenharmony_ci
3283e41f4b71Sopenharmony_ci> **说明:**
3284e41f4b71Sopenharmony_ci>
3285e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3286e41f4b71Sopenharmony_ci
3287e41f4b71Sopenharmony_ci### off('failed')<sup>10+</sup>
3288e41f4b71Sopenharmony_ci
3289e41f4b71Sopenharmony_cioff(event: 'failed', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3290e41f4b71Sopenharmony_ci
3291e41f4b71Sopenharmony_ci取消订阅任务失败事件。
3292e41f4b71Sopenharmony_ci
3293e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3294e41f4b71Sopenharmony_ci
3295e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3296e41f4b71Sopenharmony_ci
3297e41f4b71Sopenharmony_ci**参数:**
3298e41f4b71Sopenharmony_ci
3299e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3300e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3301e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'failed',表示任务失败。 |
3302e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3303e41f4b71Sopenharmony_ci
3304e41f4b71Sopenharmony_ci**错误码:**
3305e41f4b71Sopenharmony_ci
3306e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3307e41f4b71Sopenharmony_ci
3308e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3309e41f4b71Sopenharmony_ci  | -------- | -------- |
3310e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3311e41f4b71Sopenharmony_ci
3312e41f4b71Sopenharmony_ci**示例:**
3313e41f4b71Sopenharmony_ci
3314e41f4b71Sopenharmony_ci  ```ts
3315e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3316e41f4b71Sopenharmony_ci
3317e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3318e41f4b71Sopenharmony_ci    name: "taskOffTest",
3319e41f4b71Sopenharmony_ci    value: {
3320e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3321e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3322e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3323e41f4b71Sopenharmony_ci    }
3324e41f4b71Sopenharmony_ci  }];
3325e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3326e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3327e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3328e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3329e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3330e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3331e41f4b71Sopenharmony_ci    overwrite: false,
3332e41f4b71Sopenharmony_ci    method: "PUT",
3333e41f4b71Sopenharmony_ci    data: attachments,
3334e41f4b71Sopenharmony_ci    saveas: "./",
3335e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3336e41f4b71Sopenharmony_ci    metered: false,
3337e41f4b71Sopenharmony_ci    roaming: true,
3338e41f4b71Sopenharmony_ci    retry: true,
3339e41f4b71Sopenharmony_ci    redirect: true,
3340e41f4b71Sopenharmony_ci    index: 0,
3341e41f4b71Sopenharmony_ci    begins: 0,
3342e41f4b71Sopenharmony_ci    ends: -1,
3343e41f4b71Sopenharmony_ci    gauge: false,
3344e41f4b71Sopenharmony_ci    precise: false,
3345e41f4b71Sopenharmony_ci    token: "it is a secret"
3346e41f4b71Sopenharmony_ci  };
3347e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3348e41f4b71Sopenharmony_ci    console.info('upload task failed.');
3349e41f4b71Sopenharmony_ci  };
3350e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3351e41f4b71Sopenharmony_ci    console.info('upload task failed.');
3352e41f4b71Sopenharmony_ci  };
3353e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3354e41f4b71Sopenharmony_ci    task.on('failed', createOffCallback1);
3355e41f4b71Sopenharmony_ci    task.on('failed', createOffCallback2);
3356e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3357e41f4b71Sopenharmony_ci    task.off('failed', createOffCallback1);
3358e41f4b71Sopenharmony_ci    //表示取消订阅任务失败的所有回调
3359e41f4b71Sopenharmony_ci    task.off('failed');
3360e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3361e41f4b71Sopenharmony_ci    task.start();
3362e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3363e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3364e41f4b71Sopenharmony_ci  });
3365e41f4b71Sopenharmony_ci  ```
3366e41f4b71Sopenharmony_ci
3367e41f4b71Sopenharmony_ci> **说明:**
3368e41f4b71Sopenharmony_ci>
3369e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3370e41f4b71Sopenharmony_ci
3371e41f4b71Sopenharmony_ci### off('pause')<sup>11+</sup>
3372e41f4b71Sopenharmony_ci
3373e41f4b71Sopenharmony_cioff(event: 'pause', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3374e41f4b71Sopenharmony_ci
3375e41f4b71Sopenharmony_ci取消订阅任务暂停事件。
3376e41f4b71Sopenharmony_ci
3377e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3378e41f4b71Sopenharmony_ci
3379e41f4b71Sopenharmony_ci**参数:**
3380e41f4b71Sopenharmony_ci
3381e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3382e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3383e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'pause',表示任务暂停。 |
3384e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3385e41f4b71Sopenharmony_ci
3386e41f4b71Sopenharmony_ci**错误码:**
3387e41f4b71Sopenharmony_ci
3388e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
3389e41f4b71Sopenharmony_ci
3390e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3391e41f4b71Sopenharmony_ci  | -------- | -------- |
3392e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3393e41f4b71Sopenharmony_ci
3394e41f4b71Sopenharmony_ci**示例:**
3395e41f4b71Sopenharmony_ci
3396e41f4b71Sopenharmony_ci  ```ts
3397e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3398e41f4b71Sopenharmony_ci
3399e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3400e41f4b71Sopenharmony_ci    name: "taskOffTest",
3401e41f4b71Sopenharmony_ci    value: {
3402e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3403e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3404e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3405e41f4b71Sopenharmony_ci    }
3406e41f4b71Sopenharmony_ci  }];
3407e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3408e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3409e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3410e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3411e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3412e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3413e41f4b71Sopenharmony_ci    overwrite: false,
3414e41f4b71Sopenharmony_ci    method: "PUT",
3415e41f4b71Sopenharmony_ci    data: attachments,
3416e41f4b71Sopenharmony_ci    saveas: "./",
3417e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3418e41f4b71Sopenharmony_ci    metered: false,
3419e41f4b71Sopenharmony_ci    roaming: true,
3420e41f4b71Sopenharmony_ci    retry: true,
3421e41f4b71Sopenharmony_ci    redirect: true,
3422e41f4b71Sopenharmony_ci    index: 0,
3423e41f4b71Sopenharmony_ci    begins: 0,
3424e41f4b71Sopenharmony_ci    ends: -1,
3425e41f4b71Sopenharmony_ci    gauge: false,
3426e41f4b71Sopenharmony_ci    precise: false,
3427e41f4b71Sopenharmony_ci    token: "it is a secret"
3428e41f4b71Sopenharmony_ci  };
3429e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3430e41f4b71Sopenharmony_ci    console.info('upload task pause.');
3431e41f4b71Sopenharmony_ci  };
3432e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3433e41f4b71Sopenharmony_ci    console.info('upload task pause.');
3434e41f4b71Sopenharmony_ci  };
3435e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3436e41f4b71Sopenharmony_ci    task.on('pause', createOffCallback1);
3437e41f4b71Sopenharmony_ci    task.on('pause', createOffCallback2);
3438e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3439e41f4b71Sopenharmony_ci    task.off('pause', createOffCallback1);
3440e41f4b71Sopenharmony_ci    //表示取消订阅任务暂停的所有回调
3441e41f4b71Sopenharmony_ci    task.off('pause');
3442e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3443e41f4b71Sopenharmony_ci    task.start();
3444e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3445e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3446e41f4b71Sopenharmony_ci  });
3447e41f4b71Sopenharmony_ci  ```
3448e41f4b71Sopenharmony_ci
3449e41f4b71Sopenharmony_ci> **说明:**
3450e41f4b71Sopenharmony_ci>
3451e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3452e41f4b71Sopenharmony_ci
3453e41f4b71Sopenharmony_ci### off('resume')<sup>11+</sup>
3454e41f4b71Sopenharmony_ci
3455e41f4b71Sopenharmony_cioff(event: 'resume', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3456e41f4b71Sopenharmony_ci
3457e41f4b71Sopenharmony_ci取消订阅任务恢复事件。
3458e41f4b71Sopenharmony_ci
3459e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3460e41f4b71Sopenharmony_ci
3461e41f4b71Sopenharmony_ci**参数:**
3462e41f4b71Sopenharmony_ci
3463e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3464e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3465e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'resume',表示任务恢复。 |
3466e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3467e41f4b71Sopenharmony_ci
3468e41f4b71Sopenharmony_ci**错误码:**
3469e41f4b71Sopenharmony_ci
3470e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
3471e41f4b71Sopenharmony_ci
3472e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3473e41f4b71Sopenharmony_ci  | -------- | -------- |
3474e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3475e41f4b71Sopenharmony_ci
3476e41f4b71Sopenharmony_ci**示例:**
3477e41f4b71Sopenharmony_ci
3478e41f4b71Sopenharmony_ci  ```ts
3479e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3480e41f4b71Sopenharmony_ci
3481e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3482e41f4b71Sopenharmony_ci    name: "taskOffTest",
3483e41f4b71Sopenharmony_ci    value: {
3484e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3485e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3486e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3487e41f4b71Sopenharmony_ci    }
3488e41f4b71Sopenharmony_ci  }];
3489e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3490e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3491e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3492e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3493e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3494e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3495e41f4b71Sopenharmony_ci    overwrite: false,
3496e41f4b71Sopenharmony_ci    method: "PUT",
3497e41f4b71Sopenharmony_ci    data: attachments,
3498e41f4b71Sopenharmony_ci    saveas: "./",
3499e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3500e41f4b71Sopenharmony_ci    metered: false,
3501e41f4b71Sopenharmony_ci    roaming: true,
3502e41f4b71Sopenharmony_ci    retry: true,
3503e41f4b71Sopenharmony_ci    redirect: true,
3504e41f4b71Sopenharmony_ci    index: 0,
3505e41f4b71Sopenharmony_ci    begins: 0,
3506e41f4b71Sopenharmony_ci    ends: -1,
3507e41f4b71Sopenharmony_ci    gauge: false,
3508e41f4b71Sopenharmony_ci    precise: false,
3509e41f4b71Sopenharmony_ci    token: "it is a secret"
3510e41f4b71Sopenharmony_ci  };
3511e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3512e41f4b71Sopenharmony_ci    console.info('upload task resume.');
3513e41f4b71Sopenharmony_ci  };
3514e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3515e41f4b71Sopenharmony_ci    console.info('upload task resume.');
3516e41f4b71Sopenharmony_ci  };
3517e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3518e41f4b71Sopenharmony_ci    task.on('resume', createOffCallback1);
3519e41f4b71Sopenharmony_ci    task.on('resume', createOffCallback2);
3520e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3521e41f4b71Sopenharmony_ci    task.off('resume', createOffCallback1);
3522e41f4b71Sopenharmony_ci    //表示取消订阅任务恢复的所有回调
3523e41f4b71Sopenharmony_ci    task.off('resume');
3524e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3525e41f4b71Sopenharmony_ci    task.start();
3526e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3527e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3528e41f4b71Sopenharmony_ci  });
3529e41f4b71Sopenharmony_ci  ```
3530e41f4b71Sopenharmony_ci
3531e41f4b71Sopenharmony_ci> **说明:**
3532e41f4b71Sopenharmony_ci>
3533e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3534e41f4b71Sopenharmony_ci
3535e41f4b71Sopenharmony_ci### off('remove')<sup>11+</sup>
3536e41f4b71Sopenharmony_ci
3537e41f4b71Sopenharmony_cioff(event: 'remove', callback?: (progress: [Progress](#progress10)) =&gt; void): void
3538e41f4b71Sopenharmony_ci
3539e41f4b71Sopenharmony_ci取消订阅任务删除事件。
3540e41f4b71Sopenharmony_ci
3541e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3542e41f4b71Sopenharmony_ci
3543e41f4b71Sopenharmony_ci**参数:**
3544e41f4b71Sopenharmony_ci
3545e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3546e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3547e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'remove',表示任务删除。 |
3548e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3549e41f4b71Sopenharmony_ci
3550e41f4b71Sopenharmony_ci**错误码:**
3551e41f4b71Sopenharmony_ci
3552e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
3553e41f4b71Sopenharmony_ci
3554e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3555e41f4b71Sopenharmony_ci  | -------- | -------- |
3556e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3557e41f4b71Sopenharmony_ci
3558e41f4b71Sopenharmony_ci**示例:**
3559e41f4b71Sopenharmony_ci
3560e41f4b71Sopenharmony_ci  ```ts
3561e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3562e41f4b71Sopenharmony_ci
3563e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3564e41f4b71Sopenharmony_ci    name: "taskOffTest",
3565e41f4b71Sopenharmony_ci    value: {
3566e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3567e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3568e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3569e41f4b71Sopenharmony_ci    }
3570e41f4b71Sopenharmony_ci  }];
3571e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3572e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3573e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3574e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3575e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3576e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3577e41f4b71Sopenharmony_ci    overwrite: false,
3578e41f4b71Sopenharmony_ci    method: "PUT",
3579e41f4b71Sopenharmony_ci    data: attachments,
3580e41f4b71Sopenharmony_ci    saveas: "./",
3581e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3582e41f4b71Sopenharmony_ci    metered: false,
3583e41f4b71Sopenharmony_ci    roaming: true,
3584e41f4b71Sopenharmony_ci    retry: true,
3585e41f4b71Sopenharmony_ci    redirect: true,
3586e41f4b71Sopenharmony_ci    index: 0,
3587e41f4b71Sopenharmony_ci    begins: 0,
3588e41f4b71Sopenharmony_ci    ends: -1,
3589e41f4b71Sopenharmony_ci    gauge: false,
3590e41f4b71Sopenharmony_ci    precise: false,
3591e41f4b71Sopenharmony_ci    token: "it is a secret"
3592e41f4b71Sopenharmony_ci  };
3593e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.Progress) => {
3594e41f4b71Sopenharmony_ci    console.info('upload task remove.');
3595e41f4b71Sopenharmony_ci  };
3596e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.Progress) => {
3597e41f4b71Sopenharmony_ci    console.info('upload task remove.');
3598e41f4b71Sopenharmony_ci  };
3599e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3600e41f4b71Sopenharmony_ci    task.on('remove', createOffCallback1);
3601e41f4b71Sopenharmony_ci    task.on('remove', createOffCallback2);
3602e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3603e41f4b71Sopenharmony_ci    task.off('remove', createOffCallback1);
3604e41f4b71Sopenharmony_ci    //表示取消订阅任务移除的所有回调
3605e41f4b71Sopenharmony_ci    task.off('remove');
3606e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3607e41f4b71Sopenharmony_ci    task.start();
3608e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3609e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3610e41f4b71Sopenharmony_ci  });
3611e41f4b71Sopenharmony_ci  ```
3612e41f4b71Sopenharmony_ci
3613e41f4b71Sopenharmony_ci> **说明:**
3614e41f4b71Sopenharmony_ci>
3615e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3616e41f4b71Sopenharmony_ci
3617e41f4b71Sopenharmony_ci### off('response')<sup>12+</sup>
3618e41f4b71Sopenharmony_ci
3619e41f4b71Sopenharmony_cioff(event: 'response', callback?: Callback&lt;HttpResponse&gt;): void
3620e41f4b71Sopenharmony_ci
3621e41f4b71Sopenharmony_ci取消订阅任务响应头。
3622e41f4b71Sopenharmony_ci
3623e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3624e41f4b71Sopenharmony_ci
3625e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3626e41f4b71Sopenharmony_ci
3627e41f4b71Sopenharmony_ci**参数:**
3628e41f4b71Sopenharmony_ci
3629e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3630e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3631e41f4b71Sopenharmony_ci  | event | string | 是 | 订阅的事件类型。<br>- 取值为'response',表示任务响应。 |
3632e41f4b71Sopenharmony_ci  | callback | function | 否 | 需要取消订阅的回调函数。若无此参数,则取消订阅当前类型的所有回调函数。 |
3633e41f4b71Sopenharmony_ci
3634e41f4b71Sopenharmony_ci**错误码:**
3635e41f4b71Sopenharmony_ci
3636e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。
3637e41f4b71Sopenharmony_ci
3638e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3639e41f4b71Sopenharmony_ci  | -------- | -------- |
3640e41f4b71Sopenharmony_ci  | 401 | Parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
3641e41f4b71Sopenharmony_ci
3642e41f4b71Sopenharmony_ci**示例:**
3643e41f4b71Sopenharmony_ci
3644e41f4b71Sopenharmony_ci  ```ts
3645e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3646e41f4b71Sopenharmony_ci
3647e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
3648e41f4b71Sopenharmony_ci    name: "taskOffTest",
3649e41f4b71Sopenharmony_ci    value: {
3650e41f4b71Sopenharmony_ci      filename: "taskOffTest.avi",
3651e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
3652e41f4b71Sopenharmony_ci      path: "./taskOffTest.avi",
3653e41f4b71Sopenharmony_ci    }
3654e41f4b71Sopenharmony_ci  }];
3655e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3656e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
3657e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3658e41f4b71Sopenharmony_ci    title: 'taskOffTest',
3659e41f4b71Sopenharmony_ci    description: 'Sample code for event listening',
3660e41f4b71Sopenharmony_ci    mode: request.agent.Mode.FOREGROUND,
3661e41f4b71Sopenharmony_ci    overwrite: false,
3662e41f4b71Sopenharmony_ci    method: "PUT",
3663e41f4b71Sopenharmony_ci    data: attachments,
3664e41f4b71Sopenharmony_ci    saveas: "./",
3665e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3666e41f4b71Sopenharmony_ci    metered: false,
3667e41f4b71Sopenharmony_ci    roaming: true,
3668e41f4b71Sopenharmony_ci    retry: true,
3669e41f4b71Sopenharmony_ci    redirect: true,
3670e41f4b71Sopenharmony_ci    index: 0,
3671e41f4b71Sopenharmony_ci    begins: 0,
3672e41f4b71Sopenharmony_ci    ends: -1,
3673e41f4b71Sopenharmony_ci    gauge: false,
3674e41f4b71Sopenharmony_ci    precise: false,
3675e41f4b71Sopenharmony_ci    token: "it is a secret"
3676e41f4b71Sopenharmony_ci  };
3677e41f4b71Sopenharmony_ci  let createOffCallback1 = (progress: request.agent.HttpResponse) => {
3678e41f4b71Sopenharmony_ci    console.info('upload task response.');
3679e41f4b71Sopenharmony_ci  };
3680e41f4b71Sopenharmony_ci  let createOffCallback2 = (progress: request.agent.HttpResponse) => {
3681e41f4b71Sopenharmony_ci    console.info('upload task response.');
3682e41f4b71Sopenharmony_ci  };
3683e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3684e41f4b71Sopenharmony_ci    task.on('response', createOffCallback1);
3685e41f4b71Sopenharmony_ci    task.on('response', createOffCallback2);
3686e41f4b71Sopenharmony_ci    //表示取消createOffCallback1的订阅
3687e41f4b71Sopenharmony_ci    task.off('response', createOffCallback1);
3688e41f4b71Sopenharmony_ci    //表示取消订阅任务移除的所有回调
3689e41f4b71Sopenharmony_ci    task.off('response');
3690e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
3691e41f4b71Sopenharmony_ci    task.start();
3692e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3693e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3694e41f4b71Sopenharmony_ci  });
3695e41f4b71Sopenharmony_ci  ```
3696e41f4b71Sopenharmony_ci
3697e41f4b71Sopenharmony_ci> **说明:**
3698e41f4b71Sopenharmony_ci>
3699e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3700e41f4b71Sopenharmony_ci
3701e41f4b71Sopenharmony_ci### start<sup>10+</sup>
3702e41f4b71Sopenharmony_ci
3703e41f4b71Sopenharmony_cistart(callback: AsyncCallback&lt;void&gt;): void
3704e41f4b71Sopenharmony_ci
3705e41f4b71Sopenharmony_ci以下状态的任务可以被启动:
3706e41f4b71Sopenharmony_ci1. 刚被 request.agent.create 接口创建的任务
3707e41f4b71Sopenharmony_ci2. 使用 request.agent.create 接口创建的已经失败或者停止的下载任务
3708e41f4b71Sopenharmony_ci
3709e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
3710e41f4b71Sopenharmony_ci
3711e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3712e41f4b71Sopenharmony_ci
3713e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3714e41f4b71Sopenharmony_ci
3715e41f4b71Sopenharmony_ci**参数:**
3716e41f4b71Sopenharmony_ci
3717e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3718e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3719e41f4b71Sopenharmony_ci  | callback | function | 是 | 回调函数。当开启任务成功,err为undefined,否则为错误对象。 |
3720e41f4b71Sopenharmony_ci
3721e41f4b71Sopenharmony_ci**错误码:**
3722e41f4b71Sopenharmony_ci
3723e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3724e41f4b71Sopenharmony_ci
3725e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3726e41f4b71Sopenharmony_ci  | -------- | -------- |
3727e41f4b71Sopenharmony_ci  | 201 | Permission denied. |
3728e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
3729e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
3730e41f4b71Sopenharmony_ci
3731e41f4b71Sopenharmony_ci**示例:**
3732e41f4b71Sopenharmony_ci
3733e41f4b71Sopenharmony_ci  ```ts
3734e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3735e41f4b71Sopenharmony_ci
3736e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3737e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
3738e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3739e41f4b71Sopenharmony_ci    title: 'taskStartTest',
3740e41f4b71Sopenharmony_ci    description: 'Sample code for start the download task',
3741e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
3742e41f4b71Sopenharmony_ci    overwrite: false,
3743e41f4b71Sopenharmony_ci    method: "GET",
3744e41f4b71Sopenharmony_ci    data: "",
3745e41f4b71Sopenharmony_ci    saveas: "./",
3746e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3747e41f4b71Sopenharmony_ci    metered: false,
3748e41f4b71Sopenharmony_ci    roaming: true,
3749e41f4b71Sopenharmony_ci    retry: true,
3750e41f4b71Sopenharmony_ci    redirect: true,
3751e41f4b71Sopenharmony_ci    index: 0,
3752e41f4b71Sopenharmony_ci    begins: 0,
3753e41f4b71Sopenharmony_ci    ends: -1,
3754e41f4b71Sopenharmony_ci    gauge: false,
3755e41f4b71Sopenharmony_ci    precise: false,
3756e41f4b71Sopenharmony_ci    token: "it is a secret"
3757e41f4b71Sopenharmony_ci  };
3758e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3759e41f4b71Sopenharmony_ci    task.start((err: BusinessError) => {
3760e41f4b71Sopenharmony_ci      if (err) {
3761e41f4b71Sopenharmony_ci        console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
3762e41f4b71Sopenharmony_ci        return;
3763e41f4b71Sopenharmony_ci      }
3764e41f4b71Sopenharmony_ci      console.info(`Succeeded in starting a download task.`);
3765e41f4b71Sopenharmony_ci    });
3766e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
3767e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3768e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
3769e41f4b71Sopenharmony_ci  });
3770e41f4b71Sopenharmony_ci  ```
3771e41f4b71Sopenharmony_ci
3772e41f4b71Sopenharmony_ci> **说明:**
3773e41f4b71Sopenharmony_ci>
3774e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3775e41f4b71Sopenharmony_ci
3776e41f4b71Sopenharmony_ci### start<sup>10+</sup>
3777e41f4b71Sopenharmony_ci
3778e41f4b71Sopenharmony_cistart(): Promise&lt;void&gt;
3779e41f4b71Sopenharmony_ci
3780e41f4b71Sopenharmony_ci以下状态的任务可以被启动:
3781e41f4b71Sopenharmony_ci1. 刚被request.agent.create 接口创建的任务
3782e41f4b71Sopenharmony_ci2. 使用request.agent.create 接口创建的已经失败或者停止的下载任务
3783e41f4b71Sopenharmony_ci
3784e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
3785e41f4b71Sopenharmony_ci
3786e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3787e41f4b71Sopenharmony_ci
3788e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3789e41f4b71Sopenharmony_ci
3790e41f4b71Sopenharmony_ci**返回值:** 
3791e41f4b71Sopenharmony_ci
3792e41f4b71Sopenharmony_ci| 类型                | 说明                      |
3793e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
3794e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
3795e41f4b71Sopenharmony_ci
3796e41f4b71Sopenharmony_ci**错误码:**
3797e41f4b71Sopenharmony_ci
3798e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3799e41f4b71Sopenharmony_ci
3800e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3801e41f4b71Sopenharmony_ci  | -------- | -------- |
3802e41f4b71Sopenharmony_ci  | 201 | Permission denied. |
3803e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
3804e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
3805e41f4b71Sopenharmony_ci
3806e41f4b71Sopenharmony_ci**示例:**
3807e41f4b71Sopenharmony_ci
3808e41f4b71Sopenharmony_ci  ```ts
3809e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3810e41f4b71Sopenharmony_ci
3811e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3812e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
3813e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3814e41f4b71Sopenharmony_ci    title: 'taskStartTest',
3815e41f4b71Sopenharmony_ci    description: 'Sample code for start the download task',
3816e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
3817e41f4b71Sopenharmony_ci    overwrite: false,
3818e41f4b71Sopenharmony_ci    method: "GET",
3819e41f4b71Sopenharmony_ci    data: "",
3820e41f4b71Sopenharmony_ci    saveas: "./",
3821e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3822e41f4b71Sopenharmony_ci    metered: false,
3823e41f4b71Sopenharmony_ci    roaming: true,
3824e41f4b71Sopenharmony_ci    retry: true,
3825e41f4b71Sopenharmony_ci    redirect: true,
3826e41f4b71Sopenharmony_ci    index: 0,
3827e41f4b71Sopenharmony_ci    begins: 0,
3828e41f4b71Sopenharmony_ci    ends: -1,
3829e41f4b71Sopenharmony_ci    gauge: false,
3830e41f4b71Sopenharmony_ci    precise: false,
3831e41f4b71Sopenharmony_ci    token: "it is a secret"
3832e41f4b71Sopenharmony_ci  };
3833e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3834e41f4b71Sopenharmony_ci    task.start().then(() => {
3835e41f4b71Sopenharmony_ci      console.info(`Succeeded in starting a download task.`);
3836e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
3837e41f4b71Sopenharmony_ci      console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
3838e41f4b71Sopenharmony_ci    });
3839e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
3840e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3841e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
3842e41f4b71Sopenharmony_ci  });
3843e41f4b71Sopenharmony_ci  ```
3844e41f4b71Sopenharmony_ci
3845e41f4b71Sopenharmony_ci> **说明:**
3846e41f4b71Sopenharmony_ci>
3847e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
3848e41f4b71Sopenharmony_ci
3849e41f4b71Sopenharmony_ci### pause<sup>10+</sup>
3850e41f4b71Sopenharmony_ci
3851e41f4b71Sopenharmony_cipause(callback: AsyncCallback&lt;void&gt;): void
3852e41f4b71Sopenharmony_ci
3853e41f4b71Sopenharmony_ci暂停任务,可以暂停正在等待/正在运行/正在重试的任务。使用callback异步回调。
3854e41f4b71Sopenharmony_ci
3855e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3856e41f4b71Sopenharmony_ci
3857e41f4b71Sopenharmony_ci**参数:**
3858e41f4b71Sopenharmony_ci
3859e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3860e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3861e41f4b71Sopenharmony_ci  | callback | function | 是 | 回调函数。当暂停任务成功,err为undefined,否则为错误对象。 |
3862e41f4b71Sopenharmony_ci
3863e41f4b71Sopenharmony_ci**错误码:**
3864e41f4b71Sopenharmony_ci
3865e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)。
3866e41f4b71Sopenharmony_ci
3867e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3868e41f4b71Sopenharmony_ci  | -------- | -------- |
3869e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
3870e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
3871e41f4b71Sopenharmony_ci
3872e41f4b71Sopenharmony_ci**示例:**
3873e41f4b71Sopenharmony_ci
3874e41f4b71Sopenharmony_ci  ```ts
3875e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3876e41f4b71Sopenharmony_ci
3877e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3878e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
3879e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3880e41f4b71Sopenharmony_ci    title: 'taskPauseTest',
3881e41f4b71Sopenharmony_ci    description: 'Sample code for pause the download task',
3882e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
3883e41f4b71Sopenharmony_ci    overwrite: false,
3884e41f4b71Sopenharmony_ci    method: "GET",
3885e41f4b71Sopenharmony_ci    data: "",
3886e41f4b71Sopenharmony_ci    saveas: "./",
3887e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3888e41f4b71Sopenharmony_ci    metered: false,
3889e41f4b71Sopenharmony_ci    roaming: true,
3890e41f4b71Sopenharmony_ci    retry: true,
3891e41f4b71Sopenharmony_ci    redirect: true,
3892e41f4b71Sopenharmony_ci    index: 0,
3893e41f4b71Sopenharmony_ci    begins: 0,
3894e41f4b71Sopenharmony_ci    ends: -1,
3895e41f4b71Sopenharmony_ci    gauge: false,
3896e41f4b71Sopenharmony_ci    precise: false,
3897e41f4b71Sopenharmony_ci    token: "it is a secret"
3898e41f4b71Sopenharmony_ci  };
3899e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3900e41f4b71Sopenharmony_ci    task.start();
3901e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
3902e41f4b71Sopenharmony_ci    task.pause((err: BusinessError) => {
3903e41f4b71Sopenharmony_ci      if (err) {
3904e41f4b71Sopenharmony_ci        console.error(`Failed to pause the download task, Code: ${err.code}, message: ${err.message}`);
3905e41f4b71Sopenharmony_ci        return;
3906e41f4b71Sopenharmony_ci      }
3907e41f4b71Sopenharmony_ci      console.info(`Succeeded in pausing a download task. `);
3908e41f4b71Sopenharmony_ci    });
3909e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
3910e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3911e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
3912e41f4b71Sopenharmony_ci  });
3913e41f4b71Sopenharmony_ci  ```
3914e41f4b71Sopenharmony_ci
3915e41f4b71Sopenharmony_ci### pause<sup>10+</sup>
3916e41f4b71Sopenharmony_ci
3917e41f4b71Sopenharmony_cipause(): Promise&lt;void&gt;
3918e41f4b71Sopenharmony_ci
3919e41f4b71Sopenharmony_ci暂停任务,可以暂停正在等待/正在运行/正在重试的任务。使用Promise异步回调。
3920e41f4b71Sopenharmony_ci
3921e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3922e41f4b71Sopenharmony_ci
3923e41f4b71Sopenharmony_ci**返回值:** 
3924e41f4b71Sopenharmony_ci
3925e41f4b71Sopenharmony_ci| 类型                | 说明                      |
3926e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
3927e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
3928e41f4b71Sopenharmony_ci
3929e41f4b71Sopenharmony_ci**错误码:**
3930e41f4b71Sopenharmony_ci
3931e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)。
3932e41f4b71Sopenharmony_ci
3933e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
3934e41f4b71Sopenharmony_ci  | -------- | -------- |
3935e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
3936e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
3937e41f4b71Sopenharmony_ci
3938e41f4b71Sopenharmony_ci**示例:**
3939e41f4b71Sopenharmony_ci
3940e41f4b71Sopenharmony_ci  ```ts
3941e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3942e41f4b71Sopenharmony_ci
3943e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
3944e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
3945e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
3946e41f4b71Sopenharmony_ci    title: 'taskPauseTest',
3947e41f4b71Sopenharmony_ci    description: 'Sample code for pause the download task',
3948e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
3949e41f4b71Sopenharmony_ci    overwrite: false,
3950e41f4b71Sopenharmony_ci    method: "GET",
3951e41f4b71Sopenharmony_ci    data: "",
3952e41f4b71Sopenharmony_ci    saveas: "./",
3953e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
3954e41f4b71Sopenharmony_ci    metered: false,
3955e41f4b71Sopenharmony_ci    roaming: true,
3956e41f4b71Sopenharmony_ci    retry: true,
3957e41f4b71Sopenharmony_ci    redirect: true,
3958e41f4b71Sopenharmony_ci    index: 0,
3959e41f4b71Sopenharmony_ci    begins: 0,
3960e41f4b71Sopenharmony_ci    ends: -1,
3961e41f4b71Sopenharmony_ci    gauge: false,
3962e41f4b71Sopenharmony_ci    precise: false,
3963e41f4b71Sopenharmony_ci    token: "it is a secret"
3964e41f4b71Sopenharmony_ci  };
3965e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
3966e41f4b71Sopenharmony_ci    task.start();
3967e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
3968e41f4b71Sopenharmony_ci    task.pause().then(() => {
3969e41f4b71Sopenharmony_ci      console.info(`Succeeded in pausing a download task. `);
3970e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
3971e41f4b71Sopenharmony_ci      console.error(`Failed to pause the upload task, Code: ${err.code}, message: ${err.message}`);
3972e41f4b71Sopenharmony_ci    });
3973e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
3974e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
3975e41f4b71Sopenharmony_ci    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
3976e41f4b71Sopenharmony_ci  });
3977e41f4b71Sopenharmony_ci  ```
3978e41f4b71Sopenharmony_ci
3979e41f4b71Sopenharmony_ci### resume<sup>10+</sup>
3980e41f4b71Sopenharmony_ci
3981e41f4b71Sopenharmony_ciresume(callback: AsyncCallback&lt;void&gt;): void
3982e41f4b71Sopenharmony_ci
3983e41f4b71Sopenharmony_ci重新启动任务,可以恢复暂停的任务。使用callback异步回调。
3984e41f4b71Sopenharmony_ci
3985e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
3986e41f4b71Sopenharmony_ci
3987e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
3988e41f4b71Sopenharmony_ci
3989e41f4b71Sopenharmony_ci**参数:**
3990e41f4b71Sopenharmony_ci
3991e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
3992e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
3993e41f4b71Sopenharmony_ci  | callback | function | 是 | 回调函数。当重新启动任务成功,err为undefined,否则为错误对象。 |
3994e41f4b71Sopenharmony_ci
3995e41f4b71Sopenharmony_ci**错误码:**
3996e41f4b71Sopenharmony_ci
3997e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
3998e41f4b71Sopenharmony_ci
3999e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4000e41f4b71Sopenharmony_ci  | -------- | -------- |
4001e41f4b71Sopenharmony_ci  | 201 | Permission denied. |
4002e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4003e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
4004e41f4b71Sopenharmony_ci
4005e41f4b71Sopenharmony_ci**示例:**
4006e41f4b71Sopenharmony_ci
4007e41f4b71Sopenharmony_ci  ```ts
4008e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4009e41f4b71Sopenharmony_ci
4010e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4011e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
4012e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4013e41f4b71Sopenharmony_ci    title: 'taskResumeTest',
4014e41f4b71Sopenharmony_ci    description: 'Sample code for resume the download task',
4015e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4016e41f4b71Sopenharmony_ci    overwrite: false,
4017e41f4b71Sopenharmony_ci    method: "GET",
4018e41f4b71Sopenharmony_ci    data: "",
4019e41f4b71Sopenharmony_ci    saveas: "./",
4020e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4021e41f4b71Sopenharmony_ci    metered: false,
4022e41f4b71Sopenharmony_ci    roaming: true,
4023e41f4b71Sopenharmony_ci    retry: true,
4024e41f4b71Sopenharmony_ci    redirect: true,
4025e41f4b71Sopenharmony_ci    index: 0,
4026e41f4b71Sopenharmony_ci    begins: 0,
4027e41f4b71Sopenharmony_ci    ends: -1,
4028e41f4b71Sopenharmony_ci    gauge: false,
4029e41f4b71Sopenharmony_ci    precise: false,
4030e41f4b71Sopenharmony_ci    token: "it is a secret"
4031e41f4b71Sopenharmony_ci  };
4032e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
4033e41f4b71Sopenharmony_ci    task.start();
4034e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4035e41f4b71Sopenharmony_ci    task.pause();
4036e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4037e41f4b71Sopenharmony_ci    task.resume((err: BusinessError) => {
4038e41f4b71Sopenharmony_ci      if (err) {
4039e41f4b71Sopenharmony_ci        console.error(`Failed to resume the download task, Code: ${err.code}, message: ${err.message}`);
4040e41f4b71Sopenharmony_ci        return;
4041e41f4b71Sopenharmony_ci      }
4042e41f4b71Sopenharmony_ci      console.info(`Succeeded in resuming a download task. `);
4043e41f4b71Sopenharmony_ci    });
4044e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
4045e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4046e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4047e41f4b71Sopenharmony_ci  });
4048e41f4b71Sopenharmony_ci  ```
4049e41f4b71Sopenharmony_ci
4050e41f4b71Sopenharmony_ci### resume<sup>10+</sup>
4051e41f4b71Sopenharmony_ci
4052e41f4b71Sopenharmony_ciresume(): Promise&lt;void&gt;
4053e41f4b71Sopenharmony_ci
4054e41f4b71Sopenharmony_ci重新启动任务,可以恢复暂停的任务。使用Promise异步回调。
4055e41f4b71Sopenharmony_ci
4056e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
4057e41f4b71Sopenharmony_ci
4058e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4059e41f4b71Sopenharmony_ci
4060e41f4b71Sopenharmony_ci**返回值:** 
4061e41f4b71Sopenharmony_ci
4062e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4063e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4064e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
4065e41f4b71Sopenharmony_ci
4066e41f4b71Sopenharmony_ci**错误码:**
4067e41f4b71Sopenharmony_ci
4068e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4069e41f4b71Sopenharmony_ci
4070e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4071e41f4b71Sopenharmony_ci  | -------- | -------- |
4072e41f4b71Sopenharmony_ci  | 201 | Permission denied. |
4073e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4074e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
4075e41f4b71Sopenharmony_ci
4076e41f4b71Sopenharmony_ci**示例:**
4077e41f4b71Sopenharmony_ci
4078e41f4b71Sopenharmony_ci  ```ts
4079e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4080e41f4b71Sopenharmony_ci
4081e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4082e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
4083e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4084e41f4b71Sopenharmony_ci    title: 'taskResumeTest',
4085e41f4b71Sopenharmony_ci    description: 'Sample code for resume the download task',
4086e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4087e41f4b71Sopenharmony_ci    overwrite: false,
4088e41f4b71Sopenharmony_ci    method: "GET",
4089e41f4b71Sopenharmony_ci    data: "",
4090e41f4b71Sopenharmony_ci    saveas: "./",
4091e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4092e41f4b71Sopenharmony_ci    metered: false,
4093e41f4b71Sopenharmony_ci    roaming: true,
4094e41f4b71Sopenharmony_ci    retry: true,
4095e41f4b71Sopenharmony_ci    redirect: true,
4096e41f4b71Sopenharmony_ci    index: 0,
4097e41f4b71Sopenharmony_ci    begins: 0,
4098e41f4b71Sopenharmony_ci    ends: -1,
4099e41f4b71Sopenharmony_ci    gauge: false,
4100e41f4b71Sopenharmony_ci    precise: false,
4101e41f4b71Sopenharmony_ci    token: "it is a secret"
4102e41f4b71Sopenharmony_ci  };
4103e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
4104e41f4b71Sopenharmony_ci    task.start();
4105e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4106e41f4b71Sopenharmony_ci    task.pause();
4107e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4108e41f4b71Sopenharmony_ci    task.resume().then(() => {
4109e41f4b71Sopenharmony_ci      console.info(`Succeeded in resuming a download task. `);
4110e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
4111e41f4b71Sopenharmony_ci      console.error(`Failed to resume the download task, Code: ${err.code}, message: ${err.message}`);
4112e41f4b71Sopenharmony_ci    });
4113e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
4114e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4115e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4116e41f4b71Sopenharmony_ci  });
4117e41f4b71Sopenharmony_ci  ```
4118e41f4b71Sopenharmony_ci
4119e41f4b71Sopenharmony_ci### stop<sup>10+</sup>
4120e41f4b71Sopenharmony_ci
4121e41f4b71Sopenharmony_cistop(callback: AsyncCallback&lt;void&gt;): void
4122e41f4b71Sopenharmony_ci
4123e41f4b71Sopenharmony_ci停止任务,可以停止正在运行/正在等待/正在重试的任务。使用callback异步回调。
4124e41f4b71Sopenharmony_ci
4125e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4126e41f4b71Sopenharmony_ci
4127e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4128e41f4b71Sopenharmony_ci
4129e41f4b71Sopenharmony_ci**参数:**
4130e41f4b71Sopenharmony_ci
4131e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4132e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4133e41f4b71Sopenharmony_ci  | callback | function | 是 | 回调函数。当停止任务成功,err为undefined,否则为错误对象。 |
4134e41f4b71Sopenharmony_ci
4135e41f4b71Sopenharmony_ci**错误码:**
4136e41f4b71Sopenharmony_ci
4137e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)。
4138e41f4b71Sopenharmony_ci
4139e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4140e41f4b71Sopenharmony_ci  | -------- | -------- |
4141e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4142e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
4143e41f4b71Sopenharmony_ci
4144e41f4b71Sopenharmony_ci**示例:**
4145e41f4b71Sopenharmony_ci
4146e41f4b71Sopenharmony_ci  ```ts
4147e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4148e41f4b71Sopenharmony_ci
4149e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4150e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
4151e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4152e41f4b71Sopenharmony_ci    title: 'taskStopTest',
4153e41f4b71Sopenharmony_ci    description: 'Sample code for stop the download task',
4154e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4155e41f4b71Sopenharmony_ci    overwrite: false,
4156e41f4b71Sopenharmony_ci    method: "GET",
4157e41f4b71Sopenharmony_ci    data: "",
4158e41f4b71Sopenharmony_ci    saveas: "./",
4159e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4160e41f4b71Sopenharmony_ci    metered: false,
4161e41f4b71Sopenharmony_ci    roaming: true,
4162e41f4b71Sopenharmony_ci    retry: true,
4163e41f4b71Sopenharmony_ci    redirect: true,
4164e41f4b71Sopenharmony_ci    index: 0,
4165e41f4b71Sopenharmony_ci    begins: 0,
4166e41f4b71Sopenharmony_ci    ends: -1,
4167e41f4b71Sopenharmony_ci    gauge: false,
4168e41f4b71Sopenharmony_ci    precise: false,
4169e41f4b71Sopenharmony_ci    token: "it is a secret"
4170e41f4b71Sopenharmony_ci  };
4171e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
4172e41f4b71Sopenharmony_ci    task.start();
4173e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4174e41f4b71Sopenharmony_ci    task.stop((err: BusinessError) => {
4175e41f4b71Sopenharmony_ci      if (err) {
4176e41f4b71Sopenharmony_ci        console.error(`Failed to stop the download task, Code: ${err.code}, message: ${err.message}`);
4177e41f4b71Sopenharmony_ci        return;
4178e41f4b71Sopenharmony_ci      }
4179e41f4b71Sopenharmony_ci      console.info(`Succeeded in stopping a download task. `);
4180e41f4b71Sopenharmony_ci    });
4181e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
4182e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4183e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4184e41f4b71Sopenharmony_ci  });
4185e41f4b71Sopenharmony_ci  ```
4186e41f4b71Sopenharmony_ci
4187e41f4b71Sopenharmony_ci
4188e41f4b71Sopenharmony_ci### stop<sup>10+</sup>
4189e41f4b71Sopenharmony_ci
4190e41f4b71Sopenharmony_cistop(): Promise&lt;void&gt;
4191e41f4b71Sopenharmony_ci
4192e41f4b71Sopenharmony_ci停止任务,可以停止正在运行/正在等待/正在重试的任务。使用Promise异步回调。
4193e41f4b71Sopenharmony_ci
4194e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4195e41f4b71Sopenharmony_ci
4196e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4197e41f4b71Sopenharmony_ci
4198e41f4b71Sopenharmony_ci**返回值:** 
4199e41f4b71Sopenharmony_ci
4200e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4201e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4202e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
4203e41f4b71Sopenharmony_ci
4204e41f4b71Sopenharmony_ci**错误码:**
4205e41f4b71Sopenharmony_ci
4206e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)。
4207e41f4b71Sopenharmony_ci
4208e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4209e41f4b71Sopenharmony_ci  | -------- | -------- |
4210e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4211e41f4b71Sopenharmony_ci  | 21900007 | task state error. |
4212e41f4b71Sopenharmony_ci
4213e41f4b71Sopenharmony_ci**示例:**
4214e41f4b71Sopenharmony_ci
4215e41f4b71Sopenharmony_ci  ```ts
4216e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4217e41f4b71Sopenharmony_ci
4218e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4219e41f4b71Sopenharmony_ci    action: request.agent.Action.DOWNLOAD,
4220e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4221e41f4b71Sopenharmony_ci    title: 'taskStopTest',
4222e41f4b71Sopenharmony_ci    description: 'Sample code for stop the download task',
4223e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4224e41f4b71Sopenharmony_ci    overwrite: false,
4225e41f4b71Sopenharmony_ci    method: "GET",
4226e41f4b71Sopenharmony_ci    data: "",
4227e41f4b71Sopenharmony_ci    saveas: "./",
4228e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4229e41f4b71Sopenharmony_ci    metered: false,
4230e41f4b71Sopenharmony_ci    roaming: true,
4231e41f4b71Sopenharmony_ci    retry: true,
4232e41f4b71Sopenharmony_ci    redirect: true,
4233e41f4b71Sopenharmony_ci    index: 0,
4234e41f4b71Sopenharmony_ci    begins: 0,
4235e41f4b71Sopenharmony_ci    ends: -1,
4236e41f4b71Sopenharmony_ci    gauge: false,
4237e41f4b71Sopenharmony_ci    precise: false,
4238e41f4b71Sopenharmony_ci    token: "it is a secret"
4239e41f4b71Sopenharmony_ci  };
4240e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
4241e41f4b71Sopenharmony_ci    task.start();
4242e41f4b71Sopenharmony_ci    for(let t = Date.now(); Date.now() - t <= 1000;); // 等待1秒再执行下一步操作,以防异步乱序
4243e41f4b71Sopenharmony_ci    task.stop().then(() => {
4244e41f4b71Sopenharmony_ci      console.info(`Succeeded in stopping a download task. `);
4245e41f4b71Sopenharmony_ci    }).catch((err: BusinessError) => {
4246e41f4b71Sopenharmony_ci      console.error(`Failed to stop the download task, Code: ${err.code}, message: ${err.message}`);
4247e41f4b71Sopenharmony_ci    });
4248e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
4249e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4250e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4251e41f4b71Sopenharmony_ci  });
4252e41f4b71Sopenharmony_ci  ```
4253e41f4b71Sopenharmony_ci
4254e41f4b71Sopenharmony_ci## request.agent.create<sup>10+</sup>
4255e41f4b71Sopenharmony_ci
4256e41f4b71Sopenharmony_cicreate(context: BaseContext, config: Config, callback: AsyncCallback&lt;Task&gt;): void
4257e41f4b71Sopenharmony_ci
4258e41f4b71Sopenharmony_ci创建要上传或下载的任务,并将其排入队列。使用callback异步回调。
4259e41f4b71Sopenharmony_ci
4260e41f4b71Sopenharmony_ci
4261e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
4262e41f4b71Sopenharmony_ci
4263e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4264e41f4b71Sopenharmony_ci
4265e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4266e41f4b71Sopenharmony_ci
4267e41f4b71Sopenharmony_ci**参数:**
4268e41f4b71Sopenharmony_ci
4269e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4270e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4271e41f4b71Sopenharmony_ci  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
4272e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
4273e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[Task](#task10)&gt; | 是 | 回调函数。当创建上传或下载任务成功,err为undefined,data为获取到的Task对象;否则为错误对象。 |
4274e41f4b71Sopenharmony_ci
4275e41f4b71Sopenharmony_ci**错误码:**
4276e41f4b71Sopenharmony_ci
4277e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4278e41f4b71Sopenharmony_ci
4279e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4280e41f4b71Sopenharmony_ci  | -------- | -------- |
4281e41f4b71Sopenharmony_ci  | 201 | permission denied. |
4282e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
4283e41f4b71Sopenharmony_ci  | 13400001 | file operation error. |
4284e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4285e41f4b71Sopenharmony_ci  | 21900004 | the application task queue is full. |
4286e41f4b71Sopenharmony_ci  | 21900005 | task mode error. |
4287e41f4b71Sopenharmony_ci
4288e41f4b71Sopenharmony_ci**示例:**
4289e41f4b71Sopenharmony_ci
4290e41f4b71Sopenharmony_ci  ```ts
4291e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4292e41f4b71Sopenharmony_ci
4293e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
4294e41f4b71Sopenharmony_ci    name: "createTest",
4295e41f4b71Sopenharmony_ci    value: {
4296e41f4b71Sopenharmony_ci      filename: "createTest.avi",
4297e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
4298e41f4b71Sopenharmony_ci      path: "./createTest.avi",
4299e41f4b71Sopenharmony_ci    }
4300e41f4b71Sopenharmony_ci  }];
4301e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4302e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
4303e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4304e41f4b71Sopenharmony_ci    title: 'createTest',
4305e41f4b71Sopenharmony_ci    description: 'Sample code for create task',
4306e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4307e41f4b71Sopenharmony_ci    overwrite: false,
4308e41f4b71Sopenharmony_ci    method: "PUT",
4309e41f4b71Sopenharmony_ci    data: attachments,
4310e41f4b71Sopenharmony_ci    saveas: "./",
4311e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4312e41f4b71Sopenharmony_ci    metered: false,
4313e41f4b71Sopenharmony_ci    roaming: true,
4314e41f4b71Sopenharmony_ci    retry: true,
4315e41f4b71Sopenharmony_ci    redirect: true,
4316e41f4b71Sopenharmony_ci    index: 0,
4317e41f4b71Sopenharmony_ci    begins: 0,
4318e41f4b71Sopenharmony_ci    ends: -1,
4319e41f4b71Sopenharmony_ci    gauge: false,
4320e41f4b71Sopenharmony_ci    precise: false,
4321e41f4b71Sopenharmony_ci    token: "it is a secret"
4322e41f4b71Sopenharmony_ci  };
4323e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config, (err: BusinessError, task: request.agent.Task) => {
4324e41f4b71Sopenharmony_ci    if (err) {
4325e41f4b71Sopenharmony_ci      console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4326e41f4b71Sopenharmony_ci      return;
4327e41f4b71Sopenharmony_ci    }
4328e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.config}`);
4329e41f4b71Sopenharmony_ci    task.start();
4330e41f4b71Sopenharmony_ci  });
4331e41f4b71Sopenharmony_ci  ```
4332e41f4b71Sopenharmony_ci
4333e41f4b71Sopenharmony_ci> **说明:**
4334e41f4b71Sopenharmony_ci>
4335e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
4336e41f4b71Sopenharmony_ci
4337e41f4b71Sopenharmony_ci## request.agent.create<sup>10+</sup>
4338e41f4b71Sopenharmony_ci
4339e41f4b71Sopenharmony_cicreate(context: BaseContext, config: Config): Promise&lt;Task&gt;
4340e41f4b71Sopenharmony_ci
4341e41f4b71Sopenharmony_ci创建要上传或下载的任务,并将其排入队列。使用Promise异步回调。
4342e41f4b71Sopenharmony_ci
4343e41f4b71Sopenharmony_ci
4344e41f4b71Sopenharmony_ci**需要权限**:ohos.permission.INTERNET
4345e41f4b71Sopenharmony_ci
4346e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4347e41f4b71Sopenharmony_ci
4348e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4349e41f4b71Sopenharmony_ci
4350e41f4b71Sopenharmony_ci**参数:**
4351e41f4b71Sopenharmony_ci
4352e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4353e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4354e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
4355e41f4b71Sopenharmony_ci  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
4356e41f4b71Sopenharmony_ci
4357e41f4b71Sopenharmony_ci**返回值:** 
4358e41f4b71Sopenharmony_ci
4359e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4360e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4361e41f4b71Sopenharmony_ci| Promise&lt;[Task](#task10)&gt; | Promise对象。返回任务配置信息的Promise对象。 |
4362e41f4b71Sopenharmony_ci
4363e41f4b71Sopenharmony_ci**错误码:**
4364e41f4b71Sopenharmony_ci
4365e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4366e41f4b71Sopenharmony_ci
4367e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4368e41f4b71Sopenharmony_ci  | -------- | -------- |
4369e41f4b71Sopenharmony_ci  | 201 | permission denied. |
4370e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
4371e41f4b71Sopenharmony_ci  | 13400001 | file operation error. |
4372e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4373e41f4b71Sopenharmony_ci  | 21900004 | the application task queue is full. |
4374e41f4b71Sopenharmony_ci  | 21900005 | task mode error. |
4375e41f4b71Sopenharmony_ci
4376e41f4b71Sopenharmony_ci**示例:**
4377e41f4b71Sopenharmony_ci
4378e41f4b71Sopenharmony_ci  ```ts
4379e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4380e41f4b71Sopenharmony_ci
4381e41f4b71Sopenharmony_ci  let attachments: Array<request.agent.FormItem> = [{
4382e41f4b71Sopenharmony_ci    name: "createTest",
4383e41f4b71Sopenharmony_ci    value: {
4384e41f4b71Sopenharmony_ci      filename: "createTest.avi",
4385e41f4b71Sopenharmony_ci      mimeType: "application/octet-stream",
4386e41f4b71Sopenharmony_ci      path: "./createTest.avi",
4387e41f4b71Sopenharmony_ci    }
4388e41f4b71Sopenharmony_ci  }];
4389e41f4b71Sopenharmony_ci  let config: request.agent.Config = {
4390e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
4391e41f4b71Sopenharmony_ci    url: 'http://127.0.0.1', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
4392e41f4b71Sopenharmony_ci    title: 'createTest',
4393e41f4b71Sopenharmony_ci    description: 'Sample code for create task',
4394e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND,
4395e41f4b71Sopenharmony_ci    overwrite: false,
4396e41f4b71Sopenharmony_ci    method: "PUT",
4397e41f4b71Sopenharmony_ci    data: attachments,
4398e41f4b71Sopenharmony_ci    saveas: "./",
4399e41f4b71Sopenharmony_ci    network: request.agent.Network.CELLULAR,
4400e41f4b71Sopenharmony_ci    metered: false,
4401e41f4b71Sopenharmony_ci    roaming: true,
4402e41f4b71Sopenharmony_ci    retry: true,
4403e41f4b71Sopenharmony_ci    redirect: true,
4404e41f4b71Sopenharmony_ci    index: 0,
4405e41f4b71Sopenharmony_ci    begins: 0,
4406e41f4b71Sopenharmony_ci    ends: -1,
4407e41f4b71Sopenharmony_ci    gauge: false,
4408e41f4b71Sopenharmony_ci    precise: false,
4409e41f4b71Sopenharmony_ci    token: "it is a secret"
4410e41f4b71Sopenharmony_ci  };
4411e41f4b71Sopenharmony_ci  request.agent.create(getContext(), config).then((task: request.agent.Task) => {
4412e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task. result: ${task.config}`);
4413e41f4b71Sopenharmony_ci    task.start();
4414e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4415e41f4b71Sopenharmony_ci    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
4416e41f4b71Sopenharmony_ci  });
4417e41f4b71Sopenharmony_ci  ```
4418e41f4b71Sopenharmony_ci
4419e41f4b71Sopenharmony_ci> **说明:**
4420e41f4b71Sopenharmony_ci>
4421e41f4b71Sopenharmony_ci> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
4422e41f4b71Sopenharmony_ci
4423e41f4b71Sopenharmony_ci## request.agent.getTask<sup>11+</sup>
4424e41f4b71Sopenharmony_ci
4425e41f4b71Sopenharmony_cigetTask(context: BaseContext, id: string, token?: string): Promise&lt;Task&gt;
4426e41f4b71Sopenharmony_ci
4427e41f4b71Sopenharmony_ci根据任务id查询任务。使用Promise异步回调。
4428e41f4b71Sopenharmony_ci
4429e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4430e41f4b71Sopenharmony_ci
4431e41f4b71Sopenharmony_ci**参数:**
4432e41f4b71Sopenharmony_ci
4433e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4434e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4435e41f4b71Sopenharmony_ci  | context | [BaseContext](../apis-ability-kit/js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
4436e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4437e41f4b71Sopenharmony_ci  | token | string | 否 | 任务查询token。 |
4438e41f4b71Sopenharmony_ci
4439e41f4b71Sopenharmony_ci**返回值:** 
4440e41f4b71Sopenharmony_ci
4441e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4442e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4443e41f4b71Sopenharmony_ci| Promise&lt;[Task](#task10)&gt; | Promise对象。返回任务配置信息的Promise对象。 |
4444e41f4b71Sopenharmony_ci
4445e41f4b71Sopenharmony_ci**错误码:**
4446e41f4b71Sopenharmony_ci
4447e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4448e41f4b71Sopenharmony_ci
4449e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4450e41f4b71Sopenharmony_ci  | -------- | -------- |
4451e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
4452e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4453e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4454e41f4b71Sopenharmony_ci
4455e41f4b71Sopenharmony_ci**示例:**
4456e41f4b71Sopenharmony_ci
4457e41f4b71Sopenharmony_ci  ```ts
4458e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4459e41f4b71Sopenharmony_ci
4460e41f4b71Sopenharmony_ci  request.agent.getTask(getContext(), "123456").then((task: request.agent.Task) => {
4461e41f4b71Sopenharmony_ci    console.info(`Succeeded in querying a upload task. result: ${task.tid}`);
4462e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4463e41f4b71Sopenharmony_ci    console.error(`Failed to query a upload task, Code: ${err.code}, message: ${err.message}`);
4464e41f4b71Sopenharmony_ci  });
4465e41f4b71Sopenharmony_ci  ```
4466e41f4b71Sopenharmony_ci
4467e41f4b71Sopenharmony_ci## request.agent.remove<sup>10+</sup>
4468e41f4b71Sopenharmony_ci
4469e41f4b71Sopenharmony_ciremove(id: string, callback: AsyncCallback&lt;void&gt;): void
4470e41f4b71Sopenharmony_ci
4471e41f4b71Sopenharmony_ci移除属于调用方的指定任务,如果正在处理中,该任务将被迫停止。使用callback异步回调。
4472e41f4b71Sopenharmony_ci
4473e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4474e41f4b71Sopenharmony_ci
4475e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4476e41f4b71Sopenharmony_ci
4477e41f4b71Sopenharmony_ci**参数:**
4478e41f4b71Sopenharmony_ci
4479e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4480e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4481e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4482e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当删除指定任务成功,err为undefined,否则为错误对象。 |
4483e41f4b71Sopenharmony_ci
4484e41f4b71Sopenharmony_ci**错误码:**
4485e41f4b71Sopenharmony_ci
4486e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4487e41f4b71Sopenharmony_ci
4488e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4489e41f4b71Sopenharmony_ci  | -------- | -------- |
4490e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type |
4491e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4492e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4493e41f4b71Sopenharmony_ci
4494e41f4b71Sopenharmony_ci**示例:**
4495e41f4b71Sopenharmony_ci
4496e41f4b71Sopenharmony_ci  ```ts
4497e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4498e41f4b71Sopenharmony_ci
4499e41f4b71Sopenharmony_ci  request.agent.remove("123456", (err: BusinessError) => {
4500e41f4b71Sopenharmony_ci    if (err) {
4501e41f4b71Sopenharmony_ci      console.error(`Failed to removing a download task, Code: ${err.code}, message: ${err.message}`);
4502e41f4b71Sopenharmony_ci      return;
4503e41f4b71Sopenharmony_ci    }
4504e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating a download task.`);
4505e41f4b71Sopenharmony_ci  });
4506e41f4b71Sopenharmony_ci  ```
4507e41f4b71Sopenharmony_ci
4508e41f4b71Sopenharmony_ci
4509e41f4b71Sopenharmony_ci## request.agent.remove<sup>10+</sup>
4510e41f4b71Sopenharmony_ci
4511e41f4b71Sopenharmony_ciremove(id: string): Promise&lt;void&gt;
4512e41f4b71Sopenharmony_ci
4513e41f4b71Sopenharmony_ci移除属于调用方的指定任务,如果正在处理中,该任务将被迫停止,使用Promise异步回调。
4514e41f4b71Sopenharmony_ci
4515e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4516e41f4b71Sopenharmony_ci
4517e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4518e41f4b71Sopenharmony_ci
4519e41f4b71Sopenharmony_ci**参数:**
4520e41f4b71Sopenharmony_ci
4521e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4522e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4523e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4524e41f4b71Sopenharmony_ci
4525e41f4b71Sopenharmony_ci**返回值:** 
4526e41f4b71Sopenharmony_ci
4527e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4528e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4529e41f4b71Sopenharmony_ci| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
4530e41f4b71Sopenharmony_ci
4531e41f4b71Sopenharmony_ci**错误码:**
4532e41f4b71Sopenharmony_ci
4533e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4534e41f4b71Sopenharmony_ci
4535e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4536e41f4b71Sopenharmony_ci  | -------- | -------- |
4537e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type |
4538e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4539e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4540e41f4b71Sopenharmony_ci
4541e41f4b71Sopenharmony_ci**示例:**
4542e41f4b71Sopenharmony_ci
4543e41f4b71Sopenharmony_ci  ```ts
4544e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4545e41f4b71Sopenharmony_ci
4546e41f4b71Sopenharmony_ci  request.agent.remove("123456").then(() => {
4547e41f4b71Sopenharmony_ci    console.info(`Succeeded in removing a download task. `);
4548e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4549e41f4b71Sopenharmony_ci    console.error(`Failed to remove a download task, Code: ${err.code}, message: ${err.message}`);
4550e41f4b71Sopenharmony_ci  });
4551e41f4b71Sopenharmony_ci  ```
4552e41f4b71Sopenharmony_ci
4553e41f4b71Sopenharmony_ci
4554e41f4b71Sopenharmony_ci## request.agent.show<sup>10+</sup>
4555e41f4b71Sopenharmony_ci
4556e41f4b71Sopenharmony_cishow(id: string, callback: AsyncCallback&lt;TaskInfo&gt;): void
4557e41f4b71Sopenharmony_ci
4558e41f4b71Sopenharmony_ci根据任务id查询任务的详细信息。使用callback异步回调。
4559e41f4b71Sopenharmony_ci
4560e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4561e41f4b71Sopenharmony_ci
4562e41f4b71Sopenharmony_ci**参数:**
4563e41f4b71Sopenharmony_ci
4564e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4565e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4566e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4567e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[TaskInfo](#taskinfo10)&gt; | 是 | 回调函数。当查询任务操作成功,err为undefined,data为查询到的任务TaskInfo信息;否则为错误对象。 |
4568e41f4b71Sopenharmony_ci
4569e41f4b71Sopenharmony_ci**错误码:**
4570e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4571e41f4b71Sopenharmony_ci
4572e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4573e41f4b71Sopenharmony_ci  | -------- | -------- |
4574e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type |
4575e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4576e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4577e41f4b71Sopenharmony_ci
4578e41f4b71Sopenharmony_ci**示例:**
4579e41f4b71Sopenharmony_ci
4580e41f4b71Sopenharmony_ci  ```ts
4581e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4582e41f4b71Sopenharmony_ci
4583e41f4b71Sopenharmony_ci  request.agent.show("123456", (err: BusinessError, taskInfo: request.agent.TaskInfo) => {
4584e41f4b71Sopenharmony_ci    if (err) {
4585e41f4b71Sopenharmony_ci      console.error(`Failed to show a upload task, Code: ${err.code}, message: ${err.message}`);
4586e41f4b71Sopenharmony_ci      return;
4587e41f4b71Sopenharmony_ci    }
4588e41f4b71Sopenharmony_ci    console.info(`Succeeded in showing a upload task.`);
4589e41f4b71Sopenharmony_ci  });
4590e41f4b71Sopenharmony_ci  ```
4591e41f4b71Sopenharmony_ci
4592e41f4b71Sopenharmony_ci
4593e41f4b71Sopenharmony_ci## request.agent.show<sup>10+</sup>
4594e41f4b71Sopenharmony_ci
4595e41f4b71Sopenharmony_cishow(id: string): Promise&lt;TaskInfo&gt;
4596e41f4b71Sopenharmony_ci
4597e41f4b71Sopenharmony_ci根据任务id查询任务的详细信息。使用Promise异步回调。
4598e41f4b71Sopenharmony_ci
4599e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4600e41f4b71Sopenharmony_ci
4601e41f4b71Sopenharmony_ci**参数:**
4602e41f4b71Sopenharmony_ci
4603e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4604e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4605e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4606e41f4b71Sopenharmony_ci
4607e41f4b71Sopenharmony_ci**返回值:** 
4608e41f4b71Sopenharmony_ci
4609e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4610e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4611e41f4b71Sopenharmony_ci| Promise&lt;[TaskInfo](#taskinfo10)&gt; | Promise对象。返回任务详细信息TaskInfo的Promise对象。 |
4612e41f4b71Sopenharmony_ci
4613e41f4b71Sopenharmony_ci**错误码:**
4614e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4615e41f4b71Sopenharmony_ci
4616e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4617e41f4b71Sopenharmony_ci  | -------- | -------- |
4618e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type |
4619e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4620e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4621e41f4b71Sopenharmony_ci
4622e41f4b71Sopenharmony_ci**示例:**
4623e41f4b71Sopenharmony_ci
4624e41f4b71Sopenharmony_ci  ```ts
4625e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4626e41f4b71Sopenharmony_ci
4627e41f4b71Sopenharmony_ci  request.agent.show("123456").then((taskInfo: request.agent.TaskInfo) => {
4628e41f4b71Sopenharmony_ci    console.info(`Succeeded in showing a upload task.`);
4629e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4630e41f4b71Sopenharmony_ci    console.error(`Failed to show a upload task, Code: ${err.code}, message: ${err.message}`);
4631e41f4b71Sopenharmony_ci  });
4632e41f4b71Sopenharmony_ci  ```
4633e41f4b71Sopenharmony_ci
4634e41f4b71Sopenharmony_ci
4635e41f4b71Sopenharmony_ci## request.agent.touch<sup>10+</sup>
4636e41f4b71Sopenharmony_ci
4637e41f4b71Sopenharmony_citouch(id: string, token: string, callback: AsyncCallback&lt;TaskInfo&gt;): void
4638e41f4b71Sopenharmony_ci
4639e41f4b71Sopenharmony_ci根据任务id和token查询任务的详细信息。使用callback异步回调。
4640e41f4b71Sopenharmony_ci
4641e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4642e41f4b71Sopenharmony_ci
4643e41f4b71Sopenharmony_ci**参数:**
4644e41f4b71Sopenharmony_ci
4645e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4646e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4647e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4648e41f4b71Sopenharmony_ci  | token | string | 是 | 任务查询token。 |
4649e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;[TaskInfo](#taskinfo10)&gt; | 是 | 回调函数。当查询任务操作成功,err为undefined,data为查询到的任务TaskInfo信息;否则为错误对象。 |
4650e41f4b71Sopenharmony_ci
4651e41f4b71Sopenharmony_ci**错误码:**
4652e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4653e41f4b71Sopenharmony_ci
4654e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4655e41f4b71Sopenharmony_ci  | -------- | -------- |
4656e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
4657e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4658e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4659e41f4b71Sopenharmony_ci
4660e41f4b71Sopenharmony_ci**示例:**
4661e41f4b71Sopenharmony_ci
4662e41f4b71Sopenharmony_ci  ```ts
4663e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4664e41f4b71Sopenharmony_ci
4665e41f4b71Sopenharmony_ci  request.agent.touch("123456", "token", (err: BusinessError, taskInfo: request.agent.TaskInfo) => {
4666e41f4b71Sopenharmony_ci    if (err) {
4667e41f4b71Sopenharmony_ci      console.error(`Failed to touch a upload task, Code: ${err.code}, message: ${err.message}`);
4668e41f4b71Sopenharmony_ci      return;
4669e41f4b71Sopenharmony_ci    }
4670e41f4b71Sopenharmony_ci    console.info(`Succeeded in touching a upload task.`);
4671e41f4b71Sopenharmony_ci  });
4672e41f4b71Sopenharmony_ci  ```
4673e41f4b71Sopenharmony_ci
4674e41f4b71Sopenharmony_ci
4675e41f4b71Sopenharmony_ci## request.agent.touch<sup>10+</sup>
4676e41f4b71Sopenharmony_ci
4677e41f4b71Sopenharmony_citouch(id: string, token: string): Promise&lt;TaskInfo&gt;
4678e41f4b71Sopenharmony_ci
4679e41f4b71Sopenharmony_ci根据任务id和token查询任务的详细信息。使用Promise异步回调。
4680e41f4b71Sopenharmony_ci
4681e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4682e41f4b71Sopenharmony_ci
4683e41f4b71Sopenharmony_ci**参数:**
4684e41f4b71Sopenharmony_ci
4685e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4686e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4687e41f4b71Sopenharmony_ci  | id | string | 是 | 任务id。 |
4688e41f4b71Sopenharmony_ci  | token | string | 是 | 任务查询token。 |
4689e41f4b71Sopenharmony_ci
4690e41f4b71Sopenharmony_ci**返回值:** 
4691e41f4b71Sopenharmony_ci
4692e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4693e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4694e41f4b71Sopenharmony_ci| Promise&lt;[TaskInfo](#taskinfo10)&gt; | Promise对象。返回任务详细信息TaskInfo的Promise对象。 |
4695e41f4b71Sopenharmony_ci
4696e41f4b71Sopenharmony_ci**错误码:**
4697e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4698e41f4b71Sopenharmony_ci
4699e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4700e41f4b71Sopenharmony_ci  | -------- | -------- |
4701e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Missing mandatory parameters 2. Incorrect parameter type 3. Parameter verification failed |
4702e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4703e41f4b71Sopenharmony_ci  | 21900006 | task not found. |
4704e41f4b71Sopenharmony_ci
4705e41f4b71Sopenharmony_ci**示例:**
4706e41f4b71Sopenharmony_ci
4707e41f4b71Sopenharmony_ci  ```ts
4708e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4709e41f4b71Sopenharmony_ci
4710e41f4b71Sopenharmony_ci  request.agent.touch("123456", "token").then((taskInfo: request.agent.TaskInfo) => {
4711e41f4b71Sopenharmony_ci    console.info(`Succeeded in touching a upload task. `);
4712e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4713e41f4b71Sopenharmony_ci    console.error(`Failed to touch a upload task, Code: ${err.code}, message: ${err.message}`);
4714e41f4b71Sopenharmony_ci  });
4715e41f4b71Sopenharmony_ci  ```
4716e41f4b71Sopenharmony_ci
4717e41f4b71Sopenharmony_ci## request.agent.search<sup>10+</sup>
4718e41f4b71Sopenharmony_ci
4719e41f4b71Sopenharmony_cisearch(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
4720e41f4b71Sopenharmony_ci
4721e41f4b71Sopenharmony_ci根据默认[Filter](#filter10)过滤条件查找任务id。使用callback异步回调。
4722e41f4b71Sopenharmony_ci
4723e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4724e41f4b71Sopenharmony_ci
4725e41f4b71Sopenharmony_ci**参数:**
4726e41f4b71Sopenharmony_ci
4727e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4728e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4729e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是 | 回调函数。当根据过滤条件查找任务成功,err为undefined,data为满足条件的任务id;否则为错误对象。 |
4730e41f4b71Sopenharmony_ci
4731e41f4b71Sopenharmony_ci**错误码:**
4732e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4733e41f4b71Sopenharmony_ci
4734e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4735e41f4b71Sopenharmony_ci  | -------- | -------- |
4736e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Incorrect parameter type 2. Parameter verification failed |
4737e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4738e41f4b71Sopenharmony_ci
4739e41f4b71Sopenharmony_ci**示例:**
4740e41f4b71Sopenharmony_ci
4741e41f4b71Sopenharmony_ci  ```ts
4742e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4743e41f4b71Sopenharmony_ci
4744e41f4b71Sopenharmony_ci  request.agent.search((err: BusinessError, data: Array<string>) => {
4745e41f4b71Sopenharmony_ci    if (err) {
4746e41f4b71Sopenharmony_ci      console.error(`Failed to search a upload task, Code: ${err.code}, message: ${err.message}`);
4747e41f4b71Sopenharmony_ci      return;
4748e41f4b71Sopenharmony_ci    }
4749e41f4b71Sopenharmony_ci    console.info(`Succeeded in searching a upload task. `);
4750e41f4b71Sopenharmony_ci  });
4751e41f4b71Sopenharmony_ci  ```
4752e41f4b71Sopenharmony_ci
4753e41f4b71Sopenharmony_ci## request.agent.search<sup>10+</sup>
4754e41f4b71Sopenharmony_ci
4755e41f4b71Sopenharmony_cisearch(filter: Filter, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
4756e41f4b71Sopenharmony_ci
4757e41f4b71Sopenharmony_ci根据[Filter](#filter10)过滤条件查找任务id。使用callback异步回调。
4758e41f4b71Sopenharmony_ci
4759e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4760e41f4b71Sopenharmony_ci
4761e41f4b71Sopenharmony_ci**参数:**
4762e41f4b71Sopenharmony_ci
4763e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4764e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4765e41f4b71Sopenharmony_ci  | filter | [Filter](#filter10) | 是 | 过滤条件。 |
4766e41f4b71Sopenharmony_ci  | callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是 | 回调函数。当根据过滤条件查找任务成功,err为undefined,data为满足条件的任务id;否则为错误对象。 |
4767e41f4b71Sopenharmony_ci
4768e41f4b71Sopenharmony_ci**错误码:**
4769e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4770e41f4b71Sopenharmony_ci
4771e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4772e41f4b71Sopenharmony_ci  | -------- | -------- |
4773e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Incorrect parameter type 2. Parameter verification failed |
4774e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4775e41f4b71Sopenharmony_ci
4776e41f4b71Sopenharmony_ci**示例:**
4777e41f4b71Sopenharmony_ci
4778e41f4b71Sopenharmony_ci  ```ts
4779e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4780e41f4b71Sopenharmony_ci
4781e41f4b71Sopenharmony_ci  let filter: request.agent.Filter = {
4782e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
4783e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND
4784e41f4b71Sopenharmony_ci  }
4785e41f4b71Sopenharmony_ci  request.agent.search(filter, (err: BusinessError, data: Array<string>) => {
4786e41f4b71Sopenharmony_ci    if (err) {
4787e41f4b71Sopenharmony_ci      console.error(`Failed to search a upload task, Code: ${err.code}, message: ${err.message}`);
4788e41f4b71Sopenharmony_ci      return;
4789e41f4b71Sopenharmony_ci    }
4790e41f4b71Sopenharmony_ci    console.info(`Succeeded in searching a upload task. `);
4791e41f4b71Sopenharmony_ci  });
4792e41f4b71Sopenharmony_ci  ```
4793e41f4b71Sopenharmony_ci
4794e41f4b71Sopenharmony_ci
4795e41f4b71Sopenharmony_ci## request.agent.search<sup>10+</sup>
4796e41f4b71Sopenharmony_ci
4797e41f4b71Sopenharmony_cisearch(filter?: Filter): Promise&lt;Array&lt;string&gt;&gt;
4798e41f4b71Sopenharmony_ci
4799e41f4b71Sopenharmony_ci根据[Filter](#filter10)过滤条件查找任务id。使用Promise异步回调。
4800e41f4b71Sopenharmony_ci
4801e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Request.FileTransferAgent
4802e41f4b71Sopenharmony_ci
4803e41f4b71Sopenharmony_ci**参数:**
4804e41f4b71Sopenharmony_ci
4805e41f4b71Sopenharmony_ci  | 参数名 | 类型 | 必填 | 说明 |
4806e41f4b71Sopenharmony_ci  | -------- | -------- | -------- | -------- |
4807e41f4b71Sopenharmony_ci  | filter | [Filter](#filter10) | 否 | 过滤条件。 |
4808e41f4b71Sopenharmony_ci
4809e41f4b71Sopenharmony_ci**返回值:** 
4810e41f4b71Sopenharmony_ci
4811e41f4b71Sopenharmony_ci| 类型                | 说明                      |
4812e41f4b71Sopenharmony_ci| ------------------- | ------------------------- |
4813e41f4b71Sopenharmony_ci| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回满足条件任务id的Promise对象。 |
4814e41f4b71Sopenharmony_ci
4815e41f4b71Sopenharmony_ci**错误码:**
4816e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[上传下载错误码](errorcode-request.md)与[通用错误码说明文档](../errorcode-universal.md)。
4817e41f4b71Sopenharmony_ci
4818e41f4b71Sopenharmony_ci  | 错误码ID | 错误信息 |
4819e41f4b71Sopenharmony_ci  | -------- | -------- |
4820e41f4b71Sopenharmony_ci  | 401 | parameter error. Possible causes: 1. Incorrect parameter type 2. Parameter verification failed |
4821e41f4b71Sopenharmony_ci  | 13400003 | task service ability error. |
4822e41f4b71Sopenharmony_ci
4823e41f4b71Sopenharmony_ci**示例:**
4824e41f4b71Sopenharmony_ci
4825e41f4b71Sopenharmony_ci  ```ts
4826e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
4827e41f4b71Sopenharmony_ci
4828e41f4b71Sopenharmony_ci  let filter: request.agent.Filter = {
4829e41f4b71Sopenharmony_ci    action: request.agent.Action.UPLOAD,
4830e41f4b71Sopenharmony_ci    mode: request.agent.Mode.BACKGROUND
4831e41f4b71Sopenharmony_ci  }
4832e41f4b71Sopenharmony_ci  request.agent.search(filter).then((data: Array<string>) => {
4833e41f4b71Sopenharmony_ci    console.info(`Succeeded in searching a upload task. `);
4834e41f4b71Sopenharmony_ci  }).catch((err: BusinessError) => {
4835e41f4b71Sopenharmony_ci    console.error(`Failed to search a upload task, Code: ${err.code}, message: ${err.message}`);
4836e41f4b71Sopenharmony_ci  });
4837e41f4b71Sopenharmony_ci  ```
4838e41f4b71Sopenharmony_ci
4839e41f4b71Sopenharmony_ci
4840e41f4b71Sopenharmony_ci
4841