云服务器内容精选

  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 error_code String 响应码,错误码规范KP.API.0001,数字递增 error_msg String 响应描述 data CmdResultWrapper object 命令执行结果 表4 CmdResultWrapper 参数 参数类型 描述 cmd_results Array of CmdResult objects 命令执行结果 表5 CmdResult 参数 参数类型 描述 instance_id String 实例id status Integer 任务状态。1表示运行中,2表示成功,-1表示失败 error_code String 任务错误码 error_msg String 任务错误码说明 execute_msg String 任务执行返回内容,最长1024字节。命令执行成功和失败均将命令的输出返回 状态码:400 表6 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述 状态码:500 表7 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述
  • 响应示例 状态码:200 正常响应 { "data" : { "cmd_results" : [ { "instance_id" : "a44uhlf7", "status" : -1, "error_code" : "CPS.0191", "error_msg" : "Run command failed.", "execute_msg" : "ls: cannot access '/system': No such file or directory" }, { "instance_id" : "efjy72gs", "status" : 2, "error_code" : "", "error_msg" : "", "execute_msg" : "xxxxxx" } ] }, "error_code" : "0", "error_msg" : "ok"}
  • 状态码 常用状态码请参见表1。 表1 请求状态返回码 状态码 描述 说明 200 OK 资源获取成功。 201 Created 资源创建成功。 202 Accepted 已经接受处理。 204 No Content 操作成功,但无数据。 400 Bad Request 请求内容缺失或无效的请求内容。 401 Unauthorized 权限无效。 403 Forbidden 不允许执行当前请求。 404 Not Found 请求的资源没有找到。 405 Method Not Allowed 对资源的操作不允许。 406 Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。 409 Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成。 411 Missing Content-Length 请求的报文中缺少http content-length头域。 413 Request Entity Too Large 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。 416 Requested range not satisfiable 如果请求中包含了Range请求头,并且 Range中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。 429 Too Many Requests 服务器会对接口进行流控,超过了接口限流要求,服务器将无法处理。 500 Internal Server Error 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。 501 Not Implemented 请求中所涉及到的操作和元数据,系统未实现,不能处理。 503 Service Unavailable 用户发起太频繁请求,系统暂时不能为该用户提供服务。 父主题: 附录
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 x-request-id 是 String 消息跟踪唯一id X-Auth-Token 是 String 租户级Token 表2 请求Body参数 参数 是否必选 参数类型 描述 command 是 String 命令,最大长度为1024字节,只支持大小写字母、数字、下划线(_)、点(.)、斜线(/)、冒号(:)、中划线(-)。 instance_ids 是 Array of strings 实例列表
  • 响应示例 状态码:200 正常响应 { "data" : { "jobs" : [ { "job_id" : "1564567b8bab40f34711234cb80d0123", "status" : -1, "error_code" : "CPS0005", "error_msg" : "Phone not found.", "execute_msg" : null }, { "job_id" : "1564567b8bab40f34711234cb80d0456", "status" : 2, "error_code" : "", "error_msg" : "", "execute_msg" : "xxxxxx" } ] }, "error_code" : "0", "error_msg" : "ok"}
  • API概览 云手机服务接口的分类与说明如表1所示。 表1 KooPhone接口说明 类型 说明 实例执行同步命令 通过该接口可以指定云机实例同步执行adb shell命令。 实例执行异步命令 通过该接口可以指定云机实例异步执行adb shell命令。 实例执行任务查询 执行异步adb shell命令后,通过此接口查询执行结果。 实例视频设置 通过此接口可以设置串流的分辨率、码率以及对应的网络格式和FPS。 实例状态批量查询 通过该接口可以指定云机实例查询状态。 实例批量重置 通过该接口可以指定云机实例进行重置。 租户实例串流前获取设备的device_token 调用该接口获取云机实例的device_token后作为鉴权信息,携带云机实例的device_id去调用反参中的信令地址(signaling_url)。
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 error_code String 响应码,错误码规范KooPhone.API.1001,数字递增 error_msg String 响应描述 data JobDetailWrapper object 根据task_id查询出的任务列表 表4 JobDetailWrapper 参数 参数类型 描述 jobs Array of JobDetail objects 根据task_id查询出的任务列表 表5 JobDetail 参数 参数类型 描述 job_id String 任务唯一标识 status Integer 任务状态。1 表示运行中,2表示成功,-1表示失败 error_code String 任务错误码 error_msg String 任务错误码说明 execute_msg String 任务执行返回内容,最长1024字节。命令执行成功和失败均将命令的输出返回 状态码:400 表6 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述 状态码:500 表7 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 x-request-id 是 String 消息跟踪唯一id X-Auth-Token 是 String 租户级Token 表2 请求Body参数 参数 是否必选 参数类型 描述 instance_ids 是 Array of strings 实例列表,单个实例最大长度32,列表最大长度100 instance_settings 是 Array of InstanceSetting objects 视频设置内容 表3 InstanceSetting 参数 是否必选 参数类型 描述 network_type 是 String 网络类型,枚举:MOBILE_NETWORK/WIFI/WIRED,注意这三个参数都必须有,配合encoding_type必填的2种参数共6种组合,详细先看请求示例 encoding_type 是 String 编码类型,H264/H265,注意这两个参数都必须有,配合network_type必填的3种参数共6种组合,详细先看请求示例 video_spec_groups 是 Array of VideoSpecGroup objects 视频规格组 表4 VideoSpecGroup 参数 是否必选 参数类型 描述 definition_540P 是 VideoSpec object 标清参数设置,540P definition_720P 是 VideoSpec object 高清参数设置,720P definition_1080P 是 VideoSpec object 超清参数设置,1080P 表5 VideoSpec 参数 是否必选 参数类型 描述 code_rate 是 Integer 码率,单位kbps,值范围100-10000,需要是100的倍数 fps 是 Integer 帧率,单位fps,可选30,60
  • 响应参数 状态码:200 表6 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述 状态码:400 表7 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述 状态码:500 表8 响应Body参数 参数 参数类型 描述 error_code String 响应码,KOOPHONE.API.xxxx或者common.00000xxx error_msg String 响应描述
  • 请求示例 /v1/instances/video-setting{ "instance_ids" : [ "iRJEVP96" ], "instance_settings" : [ { "network_type" : "MOBILE_NETWORK", "encoding_type" : "H264", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] }, { "network_type" : "MOBILE_NETWORK", "encoding_type" : "H265", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] }, { "network_type" : "WIFI", "encoding_type" : "H264", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] }, { "network_type" : "WIFI", "encoding_type" : "H265", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] }, { "network_type" : "WIRED", "encoding_type" : "H264", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] }, { "network_type" : "WIRED", "encoding_type" : "H265", "video_spec_groups" : [ { "definition_540P" : { "code_rate" : 6000, "fps" : 30 }, "definition_720P" : { "code_rate" : 6000, "fps" : 30 }, "definition_1080P" : { "code_rate" : 8000, "fps" : 30 } } ] } ]}
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URL中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从管理员处获取。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取 IAM 在“华北-北京一”区域的Token,则需使用“华北-北京一”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 请求消息体 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-1”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中的“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 否 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 12 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 400 KOOPHONE.API.1000 请求参数错误 请求参数错误 检查请求参数类型及范围是否如何接口定义 400 KOOPHONE.API.1002 实例非同一个大区 实例非同一个大区 修改请求实例为同一个大区 401 KOOPHONE.API.1001 无实例权限 无实例权限 检查请求传入的实例id是否正确 500 KOOPHONE.API.9999 服务器内部错误 服务器内部错误 请联系华为侧运营人员检查系统是否正常 父主题: 附录