本文以无影云手机Java SDK中的云手机详情查询接口DescribeAndroidInstances为例,介绍编写无影云手机Java SDK的通用流程。
前提条件
您已经创建了AccessKey。具体操作,请参见创建AccessKey。
为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户无影云手机相关的访问权限,再使用RAM用户的AccessKey调用SDK。具体操作,请参见通过RAM用户控制资源访问。
操作步骤
如果想要先验证某个OpenAPI接口,可以在阿里云官方网站进行调试。下文以查询云手机实例信息的接口DescribeAndroidInstances为例。
打开DescribeAndroidInstances - 查询实例详细信息文档,并单击右上角的调试。
在OpenAPI门户页面上,根据提示登录您的阿里云账号。
填写相关输入参数后,单击发起调用,即可看到调用结果。
调试通过后,如需获取示例代码,请在右侧面板上单击SDK示例页签,然后选择一种语言,并单击下载完整工程。
示例工程代码说明
上述工程中的示例代码说明如下,供参考。
初始化配置对象
com.aliyun.teaopenapi.models.Config
。Config对象存放AccessKeyId、AccessKeySecret和endpoint等配置,如示例中的endpoint为eds-aic.cn-shanghai.aliyuncs.com。更多关于地域的信息,请参见DescribeRegions - 查询可用地域。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() .setAccessKeyId(accessKeyId) .setAccessKeySecret(accessKeySecret); // Endpoint 请参考 https://api.aliyun.com/product/eds-aic config.endpoint = "eds-aic.cn-shanghai.aliyuncs.com";
从
com.aliyun.eds_aic20230930.Client
类中生成对象client。后续从
com.aliyun.eds_aic20230930.models
中获得request和response。return new com.aliyun.eds_aic20230930.Client(config);
创建对应API的Request,类的命名规则为API方法名加Request。示例如下:
com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesRequest describeAndroidInstancesRequest = new com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesRequest();
设置请求类request的参数。
通过request类的属性来设置必要的信息,即API中必须要提供的信息,例如:
describeAndroidInstancesRequest.setAndroidInstanceIds(java.util.Arrays.asList("acp-bqshsra8naueg****"));
通过client对象获得对应request的response。
com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesResponse resp = client.describeAndroidInstancesWithOptions(describeAndroidInstancesRequest, runtime); com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
调用response中对应的属性获得返回的参数值。
假设需要获取
requestId
:String requestId = resp.getBody().getRequestId();
使用
catch()
处理报错。catch (Exception e) { e.printStackTrace(); }
执行结果
全部返回信息如下所示:
{
"headers": {
"access-control-allow-origin": "*",
"date": "Tue, 14 Jan 2025 09:13:47 GMT",
"content-length": "877",
"keep-alive": "timeout=25",
"x-acs-request-id": "68339213-CCA6-50AC-B570-72A47D6*****",
"connection": "keep-alive",
"content-type": "application/json;charset=utf-8",
"etag": "8RPVrEAbI88HSKYWixBhTIQ7",
"access-control-expose-headers": "*",
"x-acs-trace-id": "54a60ee6d9705a6a64c6a377da0bc2db"
},
"statusCode": 200,
"body": {
"instanceModel": [
{
"androidInstanceGroupId": "ag-bqshsra8naue*****",
"androidInstanceGroupName": "sshtest",
"androidInstanceId": "acp-bqshsra8naue*****",
"androidInstanceName": "sshtest-19",
"androidInstanceStatus": "RUNNING",
"appInstanceGroupId": "aig-0bszojpu6zp2*****",
"appInstanceId": "ai-0cfaij2zwx2v*****",
"chargeType": "PostPaid",
"cpu": "2",
"disks": [
{
"diskSize": 32,
"diskType": "SYSTEM"
}
],
"gmtCreate": "2025-01-14 11:43:03",
"gmtModified": "2025-01-14 11:44:03",
"imageVersion": "cicd.1.7.0.cpu.android12.arm64.1743.20250107175442",
"instanceType": "acp.basic.small",
"memory": 4096,
"networkInterfaceIp": "10.0.64.200",
"officeSiteId": "cn-hangzhou+dir-01730*****",
"persistentAppInstanceId": "p-0cfaij2zwx2v*****",
"policyGroupId": "pg-0afrwut55kdr*****",
"publicIpAddress": "8.149.**.**",
"regionId": "cn-hangzhou",
"renderingType": "CPU"
}
],
"requestId": "68339213-CCA6-50AC-B570-72A47D6*****",
"totalCount": 1
}
}
完整示例代码
以下为本文示例的完整Java SDK代码。
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* 使用AK&;SK初始化账号Client
* @return Client
*
* @throws Exception
*/
public static com.aliyun.eds_aic20230930.Client createClient() throws Exception {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(yourAccessKeyId)
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(yourAccessKeySecret);
// Endpoint 请参考 https://api.aliyun.com/product/eds-aic
config.endpoint = "eds-aic.cn-shanghai.aliyuncs.com";
return new com.aliyun.eds_aic20230930.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.eds_aic20230930.Client client = Sample.createClient();
com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesRequest describeAndroidInstancesRequest = new com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesRequest();
describeAndroidInstancesRequest.setAndroidInstanceIds(java.util.Arrays.asList("acp-bqshsra8nauegsckk"));
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
com.aliyun.eds_aic20230930.models.DescribeAndroidInstancesResponse resp = client.describeAndroidInstancesWithOptions(describeAndroidInstancesRequest, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
String requestId = resp.getBody().getRequestId();
System.out.println(requestId);
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
- 本页导读 (1)
- 前提条件
- 操作步骤
- 示例工程代码说明
- 执行结果
- 完整示例代码
- 相关文档