本文以查询便捷办公网络的接口DescribeOfficeSites为例,介绍编写无影云电脑企业版Java SDK的通用流程。
前提条件
您已经创建了AccessKey。具体操作,请参见创建AccessKey。
为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户无影云电脑企业版相关的访问权限,再使用RAM用户的AccessKey调用SDK。具体操作,请参见权限管理概述。
操作步骤
如果想要先验证某个OpenAPI接口,可以在阿里云官方网站进行调试。下文以查询便捷办公网络的接口DescribeOfficeSites为例。
打开DescribeOfficeSites - 查询办公网络的详细信息文档,并单击右上角的调试。
在OpenAPI门户页面上,根据提示登录您的阿里云账号。
填写相关输入参数后,单击发起调用,即可看到调用结果。
调试通过后,如需获取示例代码,请在右侧面板上单击SDK示例页签,然后选择一种语言,并单击下载完整工程。
说明完整工程中包含SDK信息和当前OpenAPI的调用demo。
示例工程代码说明
上述工程中的示例代码说明如下,供参考。
初始化配置对象
com.aliyun.teaopenapi.models.Config
。Config对象存放AccessKeyId、AccessKeySecret和endpoint等配置,如示例中的endpoint为
ecd.cn-shanghai.aliyuncs.com
。更多关于地域的信息,请参见DescribeRegions - 查看可选的地域和可用区。com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // Endpoint 请参考 https://api.aliyun.com/product/ecd config.endpoint = "ecd.cn-shanghai.aliyuncs.com";
从
com.aliyun.ecd20200930.Client
类中生成对象client。后续从
com.aliyun.ecd20200930.models
中获得request和response。com.aliyun.ecd20200930.Client client = Sample.createClient();
创建对应API的Request,类的命名规则为API方法名加上Request。
示例如下:
com.aliyun.ecd20200930.models.DescribeOfficeSitesRequest describeOfficeSitesRequest = new com.aliyun.ecd20200930.models.DescribeOfficeSitesRequest()
设置请求类request的参数。
通过request类的属性设置必要的信息,即API中必须要提供的信息。
describeOfficeSitesRequest.setRegionId("your_value")
通过client对象获得对应request的响应response。
com.aliyun.ecd20200930.models.DescribeOfficeSitesResponse resp = client.describeOfficeSitesWithOptions(describeOfficeSitesRequest, 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(); }
执行结果
全部返回信息如下所示:
{
"TotalCount": 2,
"RequestId": "27716AAC-5E4C-575F-BCF9-DB215E1CA0EB",
"OfficeSites": [
{
"CloudBoxOfficeSite": false,
"TotalEdsCountForGroup": 0,
"CidrBlock": "192.168.100.0/24",
"AdHostname": "izp323uuw9q****",
"EnableServiceRoute": false,
"DnsAddress": [
"172.16.XX.XX"
],
"Name": "DemoAD_01",
"DesktopCount": 0,
"NeedVerifyZeroDevice": false,
"SubDnsAddress": [],
"OuName": "wayne01.shanghai/WayneTestOU",
"SubnetMode": "Auto",
"CenAttachStatus": "attached",
"EnableInternetAccess": true,
"NmVersion": "DEFAULT",
"Status": "REGISTERED",
"DomainName": "wayne01.shanghai",
"TotalEdsCount": 0,
"VSwitchIds": [],
"RdsLicenseStatus": "Disabled",
"EnableAdminAccess": true,
"OfficeSiteType": "AD_CONNECTOR",
"FileSystemIds": [],
"SsoEnabled": false,
"Logs": [
{
"Message": "CreateConnector.Success",
"Level": "INFO",
"Step": "CREATE_CONNECTOR",
"TimeStamp": "2024-10-24T02:45Z"
},
{
"Message": "ConnectorStatus.NotReady",
"Level": "WARN",
"Step": "WAIT_CONNECTOR_ACTIVE",
"TimeStamp": "2024-10-24T02:45Z"
},
{
"Message": "ConnectorStatus.Ready",
"Level": "INFO",
"Step": "WAIT_CONNECTOR_ACTIVE",
"TimeStamp": "2024-10-24T02:45Z"
},
{
"Message": "CheckConnector.Success",
"Level": "INFO",
"Step": "CHECK_CONNECTOR",
"TimeStamp": "2024-10-24T02:46Z"
},
{
"Message": "WaitConnectorActive.Success",
"Level": "INFO",
"Step": "CONFIG_CONNECTOR",
"TimeStamp": "2024-10-24T02:46Z"
},
{
"Message": "User.Credential.Success",
"Level": "INFO",
"Step": "CONFIG_USER",
"TimeStamp": "2024-10-24T05:48Z"
},
{
"Message": "InvalidCredential",
"Level": "ERROR",
"Step": "CONFIG_USER",
"TimeStamp": "2024-10-24T05:49Z"
},
{
"Message": "User.Credential.Success",
"Level": "INFO",
"Step": "CONFIG_USER",
"TimeStamp": "2024-10-24T05:50Z"
},
{
"Message": "User.Credential.Success",
"Level": "INFO",
"Step": "CONFIG_USER",
"TimeStamp": "2024-10-24T05:50Z"
}
],
"MfaEnabled": false,
"OfficeSiteId": "cn-shanghai+dir-312783****",
"VpcType": "standard",
"VpcId": "vpc-uf6r0plvlj9l8u960****",
"EnableCrossDesktopAccess": false,
"ProtocolType": "ASP",
"TotalResourceAmount": 0,
"CreationTime": "2024-10-24T02:43Z",
"CenId": "cen-6y8yiwkbf6n4ku****",
"DesktopAccessType": "INTERNET",
"ADConnectors": [
{
"ConnectorStatus": "RUNNING",
"VSwitchId": "vsw-uf61s651owyd2civr****",
"ADConnectorAddress": "192.168.XX.XX",
"Specification": 1,
"NetworkInterfaceId": "eni-uf6ie3truu4cly1v****"
},
{
"ConnectorStatus": "RUNNING",
"VSwitchId": "vsw-uf61s651owyd2civr****",
"ADConnectorAddress": "192.168.XX.XX",
"Specification": 1,
"NetworkInterfaceId": "eni-uf61nhnfu3fzacp0****"
}
],
"DomainUserName": "ad-user"
},
{
"CloudBoxOfficeSite": false,
"TotalEdsCountForGroup": 0,
"CidrBlock": "10.0.0.0/8",
"EnableServiceRoute": false,
"DnsAddress": [],
"Name": "default",
"DesktopCount": 0,
"NeedVerifyZeroDevice": false,
"SubDnsAddress": [],
"OuName": "default",
"SubnetMode": "Auto",
"EnableInternetAccess": true,
"NmVersion": "DEFAULT",
"Status": "REGISTERED",
"TotalEdsCount": 0,
"VSwitchIds": [],
"NeedVerifyLoginRisk": false,
"RdsLicenseStatus": "Disabled",
"EnableAdminAccess": false,
"OfficeSiteType": "SIMPLE",
"FileSystemIds": [],
"SsoEnabled": false,
"MfaEnabled": false,
"SsoType": "NONE",
"OfficeSiteId": "cn-shanghai+dir-121772****",
"VpcType": "basic",
"EnableCrossDesktopAccess": false,
"TotalResourceAmount": 0,
"CreationTime": "2024-03-26T03:01Z",
"DesktopAccessType": "INTERNET",
"ADConnectors": []
}
]
}
完整示例代码
以下为本文示例的完整Java SDK代码。
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* <b>description</b> :
* <p>使用AK&SK初始化账号Client</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.ecd20200930.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(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Endpoint 请参考 https://api.aliyun.com/product/ecd
config.endpoint = "ecd.cn-shanghai.aliyuncs.com";
return new com.aliyun.ecd20200930.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.ecd20200930.Client client = Sample.createClient();
com.aliyun.ecd20200930.models.DescribeOfficeSitesRequest describeOfficeSitesRequest = new com.aliyun.ecd20200930.models.DescribeOfficeSitesRequest()
.setRegionId("cn-shanghai");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
com.aliyun.ecd20200930.models.DescribeOfficeSitesResponse resp = client.describeOfficeSitesWithOptions(describeOfficeSitesRequest, 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);
}
}
}