部分 MoreLogin 操作会在底层浏览器、云手机、文件、应用或 RPA 执行到达最终状态之前就接受请求。提交成功的响应只代表请求已被接受,并不总是代表目标状态已经达成。
| 状态 | 含义 | 客户端应做什么 |
|---|---|---|
| 已提交 | 接口已接受命令或已创建任务 | 保存返回的 ID 与 requestId;不要立刻重复提交同一次写操作 |
| 等待中或执行中 | 下游操作仍在推进 | 以递增间隔轮询文档指定的状态/结果接口 |
| 已成功 | 目标资源或任务到达成功终态 | 停止轮询,继续后续流程 |
| 已失败 | 状态/结果接口报告失败或终态业务错误 | 停止自动重试;保留 ID、失败详情与 requestId |
| 结果未知 | 写操作超时,或连接断开且没有可用响应 | 先查询资源/任务当前状态,再决定是否重试 |
- 从约 1 秒开始,逐步增加到 2、4、8 秒,上限 15–30 秒。
- 加入抖动,避免并发客户端在同一瞬间轮询。
- 到达文档定义的终态即停止;不要无限轮询。
- 只有接口明确说明该行为时,才把
data: null当作等待中。 - 写操作的传输超时并不证明失败。
| 工作流 | 提交操作 | 观察操作 | 终态 |
|---|---|---|---|
| 云浏览器开启/关闭 | POST /cloudbrowser/start 或 /cloudbrowser/stop | POST /cloudbrowser/page | 运行实例达到预期状态,或关闭后消失 |
| 云手机开关机 | POST /cloudphone/powerOn 或 /cloudphone/powerOff | POST /cloudphone/page | envStatus=4 已开机或 envStatus=2 已关机;1 表示创建失败 |
| 云手机文件上传 | 上传到签名 URL,然后 POST /cloudphone/uploadFile | POST /cloudphone/uploadFileResult | status=1 成功或 status=2 失败;data: null 与 status=0 表示等待中 |
| 云手机下载 | POST /cloudphone/download | POST /cloudphone/download/result | status=20 成功、30 失败、40 已取消;10 表示执行中 |
| 应用安装 | POST /cloudphone/app/install | POST /cloudphone/app/installedList | 目标包名出现在已安装应用列表中 |
| RPA 计划/执行 | POST /cloudphone/rpa/task/save 或 /onceTask/save | POST /cloudphone/rpa/task/page、/subTask/page 与 /subTask/detail/{id} | taskState=2 已完成或 3 已取消;再看 handleResult(0 失败,1 成功) |
| 直播 | POST /cloudphone/live/start 或 /live/end | POST /cloudphone/live/status | 状态确认已开始或已停止推流 |
| 云存储上传 | POST /cloudstorage/upload/init,随后对对象存储发 PUT | 全部必需 PUT 成功后调用 POST /cloudstorage/upload/complete | 完成请求返回成功;对象上传成功前绝不要调用 complete |
Local API 的对应接口在文档标注处使用 /api 前缀。逐个操作的指引见端点重试与完成矩阵。
try:
submit_operation()
except TimeoutError:
# The write may already have succeeded.
current = query_current_state()
if current.is_terminal_success:
pass
elif current.is_pending:
poll_until_terminal()
else:
decide_whether_retry_is_safe(current)公开接口目前没有定义通用的幂等键请求头。因此资源 ID、任务 ID、状态查询与 requestId 是安全恢复的关键。