Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5361c294
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5361c294
编写于
11月 24, 2022
作者:
W
wangdongqi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Signed-off-by: wangdongqi <wangdongqi2@huawei.com>
Changes to be committed:
上级
a8af9a8a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
0 deletion
+43
-0
zh-cn/application-dev/reference/apis/js-apis-request.md
zh-cn/application-dev/reference/apis/js-apis-request.md
+43
-0
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-request.md
浏览文件 @
5361c294
...
@@ -367,6 +367,7 @@ on(type: 'progress', callback:(uploadedSize: number, totalSize: number) => vo
...
@@ -367,6 +367,7 @@ on(type: 'progress', callback:(uploadedSize: number, totalSize: number) => vo
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
on
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
uploadTask
.
on
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
console
.
info
(
"
upload totalSize:
"
+
totalSize
+
"
uploadedSize:
"
+
uploadedSize
);
console
.
info
(
"
upload totalSize:
"
+
totalSize
+
"
uploadedSize:
"
+
uploadedSize
);
}
}
...
@@ -400,6 +401,7 @@ on(type: 'headerReceive', callback: (header: object) => void): void
...
@@ -400,6 +401,7 @@ on(type: 'headerReceive', callback: (header: object) => void): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
on
(
'
headerReceive
'
,
function
callback
(
headers
){
uploadTask
.
on
(
'
headerReceive
'
,
function
callback
(
headers
){
console
.
info
(
"
upOnHeader headers:
"
+
JSON
.
stringify
(
headers
));
console
.
info
(
"
upOnHeader headers:
"
+
JSON
.
stringify
(
headers
));
}
}
...
@@ -433,6 +435,7 @@ on(type: 'headerReceive', callback: (header: object) => void): void
...
@@ -433,6 +435,7 @@ on(type: 'headerReceive', callback: (header: object) => void): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
on
(
'
complete
'
,
function
callback
(
taskStates
)
{
uploadTask
.
on
(
'
complete
'
,
function
callback
(
taskStates
)
{
for
(
let
i
=
0
;
i
<
taskStates
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
taskStates
.
length
;
i
++
)
{
console
.
info
(
"
upOnComplete taskState:
"
+
JSON
.
stringify
(
taskStates
[
i
]));
console
.
info
(
"
upOnComplete taskState:
"
+
JSON
.
stringify
(
taskStates
[
i
]));
...
@@ -476,6 +479,7 @@ off(type: 'progress', callback?: (uploadedSize: number, totalSize: number) =&g
...
@@ -476,6 +479,7 @@ off(type: 'progress', callback?: (uploadedSize: number, totalSize: number) =&g
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
off
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
uploadTask
.
off
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
console
.
info
(
'
uploadedSize:
'
+
uploadedSize
,
'
totalSize:
'
+
totalSize
);
console
.
info
(
'
uploadedSize:
'
+
uploadedSize
,
'
totalSize:
'
+
totalSize
);
}
}
...
@@ -509,6 +513,11 @@ off(type: 'headerReceive', callback?: (header: object) => void): void
...
@@ -509,6 +513,11 @@ off(type: 'headerReceive', callback?: (header: object) => void): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
off
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
console
.
info
(
'
uploadedSize:
'
+
uploadedSize
,
'
totalSize:
'
+
totalSize
);
}
);
uploadTask
.
off
(
'
headerReceive
'
,
function
callback
(
headers
)
{
uploadTask
.
off
(
'
headerReceive
'
,
function
callback
(
headers
)
{
console
.
info
(
"
upOnHeader headers:
"
+
JSON
.
stringify
(
headers
));
console
.
info
(
"
upOnHeader headers:
"
+
JSON
.
stringify
(
headers
));
}
}
...
@@ -541,6 +550,11 @@ off(type: 'headerReceive', callback?: (header: object) => void): void
...
@@ -541,6 +550,11 @@ off(type: 'headerReceive', callback?: (header: object) => void): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
off
(
'
progress
'
,
function
callback
(
uploadedSize
,
totalSize
)
{
console
.
info
(
'
uploadedSize:
'
+
uploadedSize
,
'
totalSize:
'
+
totalSize
);
}
);
uploadTask
.
off
(
'
complete
'
,
function
callback
(
taskStates
)
{
uploadTask
.
off
(
'
complete
'
,
function
callback
(
taskStates
)
{
for
(
let
i
=
0
;
i
<
taskStates
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
taskStates
.
length
;
i
++
)
{
console
.
info
(
"
upOnComplete taskState:
"
+
JSON
.
stringify
(
taskStates
[
i
]));
console
.
info
(
"
upOnComplete taskState:
"
+
JSON
.
stringify
(
taskStates
[
i
]));
...
@@ -578,6 +592,7 @@ remove(): Promise<boolean>
...
@@ -578,6 +592,7 @@ remove(): Promise<boolean>
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
remove
().
then
((
result
)
=>
{
uploadTask
.
remove
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Upload task removed successfully.
'
);
console
.
info
(
'
Upload task removed successfully.
'
);
...
@@ -611,6 +626,7 @@ remove(callback: AsyncCallback<boolean>): void
...
@@ -611,6 +626,7 @@ remove(callback: AsyncCallback<boolean>): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
remove
((
err
,
result
)
=>
{
uploadTask
.
remove
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to remove the upload task. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to remove the upload task. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -644,6 +660,7 @@ delete(): Promise<boolean>
...
@@ -644,6 +660,7 @@ delete(): Promise<boolean>
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
delete
().
then
((
result
)
=>
{
uploadTask
.
delete
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Upload task removed successfully.
'
);
console
.
info
(
'
Upload task removed successfully.
'
);
...
@@ -675,6 +692,7 @@ delete(callback: AsyncCallback<boolean>): void
...
@@ -675,6 +692,7 @@ delete(callback: AsyncCallback<boolean>): void
**示例:**
**示例:**
```
js
```
js
let
uploadTask
;
uploadTask
.
delete
((
err
,
result
)
=>
{
uploadTask
.
delete
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to remove the upload task. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to remove the upload task. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1004,6 +1022,7 @@ on(type: 'progress', callback:(receivedSize: number, totalSize: number) => vo
...
@@ -1004,6 +1022,7 @@ on(type: 'progress', callback:(receivedSize: number, totalSize: number) => vo
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
on
(
'
progress
'
,
function
download_callback
(
receivedSize
,
totalSize
)
{
downloadTask
.
on
(
'
progress
'
,
function
download_callback
(
receivedSize
,
totalSize
)
{
console
.
info
(
"
download receivedSize:
"
+
receivedSize
+
"
totalSize:
"
+
totalSize
);
console
.
info
(
"
download receivedSize:
"
+
receivedSize
+
"
totalSize:
"
+
totalSize
);
}
}
...
@@ -1065,6 +1084,7 @@ on(type: 'complete'|'pause'|'remove', callback:() => void): void
...
@@ -1065,6 +1084,7 @@ on(type: 'complete'|'pause'|'remove', callback:() => void): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
on
(
'
complete
'
,
function
callback
()
{
downloadTask
.
on
(
'
complete
'
,
function
callback
()
{
console
.
info
(
'
Download task completed.
'
);
console
.
info
(
'
Download task completed.
'
);
}
}
...
@@ -1092,6 +1112,7 @@ off(type: 'complete'|'pause'|'remove', callback?:() => void): void
...
@@ -1092,6 +1112,7 @@ off(type: 'complete'|'pause'|'remove', callback?:() => void): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
off
(
'
complete
'
,
function
callback
()
{
downloadTask
.
off
(
'
complete
'
,
function
callback
()
{
console
.
info
(
'
Download task completed.
'
);
console
.
info
(
'
Download task completed.
'
);
}
}
...
@@ -1125,6 +1146,7 @@ on(type: 'fail', callback: (err: number) => void): void
...
@@ -1125,6 +1146,7 @@ on(type: 'fail', callback: (err: number) => void): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
on
(
'
fail
'
,
function
callBack
(
err
)
{
downloadTask
.
on
(
'
fail
'
,
function
callBack
(
err
)
{
console
.
info
(
'
Download task failed. Cause:
'
+
err
);
console
.
info
(
'
Download task failed. Cause:
'
+
err
);
}
}
...
@@ -1158,6 +1180,7 @@ off(type: 'fail', callback?: (err: number) => void): void
...
@@ -1158,6 +1180,7 @@ off(type: 'fail', callback?: (err: number) => void): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
off
(
'
fail
'
,
function
callBack
(
err
)
{
downloadTask
.
off
(
'
fail
'
,
function
callBack
(
err
)
{
console
.
info
(
'
Download task failed. Cause:
'
+
err
);
console
.
info
(
'
Download task failed. Cause:
'
+
err
);
}
}
...
@@ -1186,6 +1209,7 @@ remove(): Promise<boolean>
...
@@ -1186,6 +1209,7 @@ remove(): Promise<boolean>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
remove
().
then
((
result
)
=>
{
downloadTask
.
remove
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task removed.
'
);
console
.
info
(
'
Download task removed.
'
);
...
@@ -1219,6 +1243,7 @@ remove(callback: AsyncCallback<boolean>): void
...
@@ -1219,6 +1243,7 @@ remove(callback: AsyncCallback<boolean>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
remove
((
err
,
result
)
=>
{
downloadTask
.
remove
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to remove the download task.
'
);
console
.
error
(
'
Failed to remove the download task.
'
);
...
@@ -1253,6 +1278,7 @@ query(): Promise<DownloadInfo>
...
@@ -1253,6 +1278,7 @@ query(): Promise<DownloadInfo>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
query
().
then
((
downloadInfo
)
=>
{
downloadTask
.
query
().
then
((
downloadInfo
)
=>
{
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
downloadInfo
))
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
downloadInfo
))
})
.
catch
((
err
)
=>
{
})
.
catch
((
err
)
=>
{
...
@@ -1282,6 +1308,7 @@ query(callback: AsyncCallback<DownloadInfo>): void
...
@@ -1282,6 +1308,7 @@ query(callback: AsyncCallback<DownloadInfo>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
query
((
err
,
downloadInfo
)
=>
{
downloadTask
.
query
((
err
,
downloadInfo
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1313,6 +1340,7 @@ queryMimeType(): Promise<string>
...
@@ -1313,6 +1340,7 @@ queryMimeType(): Promise<string>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
queryMimeType
().
then
((
data
)
=>
{
downloadTask
.
queryMimeType
().
then
((
data
)
=>
{
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
data
));
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
data
));
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
...
@@ -1342,6 +1370,7 @@ queryMimeType(callback: AsyncCallback<string>): void;
...
@@ -1342,6 +1370,7 @@ queryMimeType(callback: AsyncCallback<string>): void;
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
queryMimeType
((
err
,
data
)
=>
{
downloadTask
.
queryMimeType
((
err
,
data
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1373,6 +1402,7 @@ pause(): Promise<void>
...
@@ -1373,6 +1402,7 @@ pause(): Promise<void>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
pause
().
then
((
result
)
=>
{
downloadTask
.
pause
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task paused.
'
);
console
.
info
(
'
Download task paused.
'
);
...
@@ -1406,6 +1436,7 @@ pause(callback: AsyncCallback<void>): void
...
@@ -1406,6 +1436,7 @@ pause(callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
pause
((
err
,
result
)
=>
{
downloadTask
.
pause
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to pause the download task. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to pause the download task. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1441,6 +1472,7 @@ resume(): Promise<void>
...
@@ -1441,6 +1472,7 @@ resume(): Promise<void>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
resume
().
then
((
result
)
=>
{
downloadTask
.
resume
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task resumed.
'
)
console
.
info
(
'
Download task resumed.
'
)
...
@@ -1475,6 +1507,7 @@ resume(callback: AsyncCallback<void>): void
...
@@ -1475,6 +1507,7 @@ resume(callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
resume
((
err
,
result
)
=>
{
downloadTask
.
resume
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to resume the download task. Cause:
'
+
err
);
console
.
error
(
'
Failed to resume the download task. Cause:
'
+
err
);
...
@@ -1508,6 +1541,7 @@ delete(): Promise<boolean>
...
@@ -1508,6 +1541,7 @@ delete(): Promise<boolean>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
delete
().
then
((
result
)
=>
{
downloadTask
.
delete
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task removed.
'
);
console
.
info
(
'
Download task removed.
'
);
...
@@ -1539,6 +1573,7 @@ delete(callback: AsyncCallback<boolean>): void
...
@@ -1539,6 +1573,7 @@ delete(callback: AsyncCallback<boolean>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
delete
((
err
,
result
)
=>
{
downloadTask
.
delete
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to remove the download task.
'
);
console
.
error
(
'
Failed to remove the download task.
'
);
...
@@ -1571,6 +1606,7 @@ getTaskInfo(): Promise<DownloadInfo>
...
@@ -1571,6 +1606,7 @@ getTaskInfo(): Promise<DownloadInfo>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
getTaskInfo
().
then
((
downloadInfo
)
=>
{
downloadTask
.
getTaskInfo
().
then
((
downloadInfo
)
=>
{
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
downloadInfo
))
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
downloadInfo
))
})
.
catch
((
err
)
=>
{
})
.
catch
((
err
)
=>
{
...
@@ -1598,6 +1634,7 @@ query(callback: AsyncCallback<DownloadInfo>): void
...
@@ -1598,6 +1634,7 @@ query(callback: AsyncCallback<DownloadInfo>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
getTaskInfo
((
err
,
downloadInfo
)
=>
{
downloadTask
.
getTaskInfo
((
err
,
downloadInfo
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1627,6 +1664,7 @@ getTaskMimeType(): Promise<string>
...
@@ -1627,6 +1664,7 @@ getTaskMimeType(): Promise<string>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
getTaskMimeType
().
then
((
data
)
=>
{
downloadTask
.
getTaskMimeType
().
then
((
data
)
=>
{
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
data
));
console
.
info
(
'
Download task queried. Data:
'
+
JSON
.
stringify
(
data
));
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
...
@@ -1654,6 +1692,7 @@ getTaskMimeType(callback: AsyncCallback<string>): void;
...
@@ -1654,6 +1692,7 @@ getTaskMimeType(callback: AsyncCallback<string>): void;
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
getTaskMimeType
((
err
,
data
)
=>
{
downloadTask
.
getTaskMimeType
((
err
,
data
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to query the download mimeType. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1683,6 +1722,7 @@ suspend(): Promise<void>
...
@@ -1683,6 +1722,7 @@ suspend(): Promise<void>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
suspend
().
then
((
result
)
=>
{
downloadTask
.
suspend
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task paused.
'
);
console
.
info
(
'
Download task paused.
'
);
...
@@ -1714,6 +1754,7 @@ suspend(callback: AsyncCallback<void>): void
...
@@ -1714,6 +1754,7 @@ suspend(callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
suspend
((
err
,
result
)
=>
{
downloadTask
.
suspend
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to pause the download task. Cause:
'
+
JSON
.
stringify
(
err
));
console
.
error
(
'
Failed to pause the download task. Cause:
'
+
JSON
.
stringify
(
err
));
...
@@ -1747,6 +1788,7 @@ restore(): Promise<void>
...
@@ -1747,6 +1788,7 @@ restore(): Promise<void>
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
restore
().
then
((
result
)
=>
{
downloadTask
.
restore
().
then
((
result
)
=>
{
if
(
result
)
{
if
(
result
)
{
console
.
info
(
'
Download task resumed.
'
)
console
.
info
(
'
Download task resumed.
'
)
...
@@ -1779,6 +1821,7 @@ restore(callback: AsyncCallback<void>): void
...
@@ -1779,6 +1821,7 @@ restore(callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
let
downloadTask
;
downloadTask
.
restore
((
err
,
result
)
=>
{
downloadTask
.
restore
((
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
'
Failed to resume the download task. Cause:
'
+
err
);
console
.
error
(
'
Failed to resume the download task. Cause:
'
+
err
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录