IoT Platform Java SDK を使用すると、Java プログラムから IoT Platform のリソースを管理できます。SDK は、Maven 依存関係として追加するか、ローカルパッケージからインストールできます。
SDK のインストール
-
Java 開発環境をインストールします。
Java の公式サイトから Java 開発環境をダウンロードしてインストールします。Java 8 以降のバージョンをインストールしてください。
-
IoT Java SDK をインストールします。
-
Apache Maven の公式サイトにアクセスして、Maven ソフトウェアをダウンロードします。
-
Maven プロジェクトの依存関係を追加します。
重要次の
versionは一例です。最新バージョンについては、「OpenAPI Portal での IoT Platform 用 SDK のインストール方法」をご参照ください。-
IoT Java SDK の Maven 依存関係の座標:
<!-- https://mvnrepository.com/artifact/com.aliyun/iot20180120 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>4.2.0</version> </dependency> -
Alibaba Cloud Java SDK 共通パッケージの Maven 依存関係の座標:
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.2.2</version> </dependency>
-
-
Java SDK のソースコードの詳細については、「alibabacloud-java-sdk」をご参照ください。
SDK の初期化
-
SDK の初期化パラメーター (AccessKey ID、AccessKey シークレット、リージョン ID など) を格納するために、 config という名前の Config オブジェクトを作成します。
-
client という名前の Client オブジェクトインスタンスを作成します。
com.aliyun.iot20180120.Client(config)メソッドを呼び出して、 config から SDK 情報を読み込み、クライアントを初期化します。後続の API 呼び出しの Request および Response パラメーターは
com.aliyun.iot20180120.modelsにあります。
次の例では、中国 (上海) リージョンの SDK を初期化します。エンドポイントを、お使いの IoT Platform サービスがデプロイされているリージョンのエンドポイントに置き換えてください。
Config config = new Config()
// ご自身の AccessKey ID。
.setAccessKeyId(accessKeyId)
// ご自身の AccessKey シークレット。
.setAccessKeySecret(accessKeySecret);
// アクセスするエンドポイント。
config.endpoint = "iot.cn-shanghai.aliyuncs.com";
Client client = new Client(config);
|
パラメーター |
説明 |
|
accessKeyId |
ご使用の Alibaba Cloud アカウントの AccessKey ID です。 Alibaba Cloud コンソールの AccessKey 管理ページで AccessKey ペアを作成または表示できます。 |
|
accessKeySecret |
ご使用の Alibaba Cloud アカウントの AccessKey シークレット です。 |
|
regionId |
IoT Platform サービスのリージョン ID で、 iot.${RegionId}.aliyuncs.com. という形式でエンドポイントを構築するために使用します。 IoT Platform コンソールの左上で現在のサービスリージョンを確認できます。 リージョン ID の指定方法の詳細については、「リージョンとゾーン」をご参照ください。 |
コードに AccessKey 認証情報をハードコーディングすることに伴うセキュリティリスクを回避するため、環境変数を使用して AccessKey ペアを管理することを推奨します。
ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をオペレーティングシステムに追加し、ご自身の AccessKey ID と AccessKey シークレットに設定してください。
コードで認証情報を取得するには、次のようにします。
-
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") -
System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
SDK クライアントの HTTP リクエスト、プロキシ、タイムアウト、再試行の設定方法については、「Alibaba Cloud SDK for Java ドキュメント」をご参照ください。
呼び出しの実行
IoT Platform クラウド SDK は、API ごとに 2 つのクラス、 ${API name}+"Request" と ${API name}+"Response" を提供します。これらのクラスは、API リクエストとレスポンスを表します。
呼び出し手順
-
SDK クライアントを初期化します。詳細については、「SDK の初期化」をご参照ください。
-
API 呼び出し用に、 request という名前の
${API name}+"Request"オブジェクトインスタンスを作成します。 -
request オブジェクトの
set+${Request parameter name}メソッドを呼び出して、必須のリクエストパラメーターを設定します。 -
response という名前の
${API name}+"Response"オブジェクトインスタンスを作成します。 client オブジェクトの${API name}(request)メソッドを呼び出して、レスポンスを取得します。レスポンスには、サーバーからの body と headers が含まれます。 -
response オブジェクトの body メンバーの
get+${Response parameter name}メソッドを呼び出して、レスポンスパラメーターの値を取得します。たとえば、
response.getBody().getSuccess()は成功フラグを取得します。 Success は、共通のレスポンスパラメーターです。その他の共通レスポンスパラメーターには、 RequestId、 ErrorMessage、 Code などがあります。 -
catch()メソッドを使用して例外を処理します。
IoT Platform クラウド API の完全なリストについては、「API リスト」をご参照ください。リクエストおよびレスポンスパラメーターの説明については、各 API のドキュメントをご参照ください。
次の例では、Pub API を使用してトピックにメッセージを公開します。リクエストパラメーターの詳細については、「Pub」をご参照ください。
次のコードにある iotInstanceId はインスタンス ID です。インスタンスの詳細については、「インスタンスの概要」をご参照ください。
インスタンスの購入方法については、「エンタープライズインスタンスの購入」をご参照ください。
PubRequest request = new PubRequest()
.setIotInstanceId("${iotInstanceId}")
.setProductKey("${productKey}")
.setMessageContent(Base64.getEncoder().encodeToString("hello world".getBytes()))
.setTopicFullName("/${productKey}/${deviceName}/user/get")
.setQos(0);// QoS 0 と QoS 1 をサポートしています。
try {
PubResponse response = client.pub(request);
// レスポンスには、サーバー側の body と headers が含まれます。
// この呼び出しのリクエスト ID を取得します。
System.out.println(response.getBody().getRequestId());
// 呼び出しが成功したかどうかを確認します。
System.out.println(response.getBody().getSuccess());
// 呼び出しは成功しました。
if (response.getBody().getSuccess()) {
// クラウドからメッセージ ID を取得します。
System.out.println(response.getBody().getMessageId());
// ビジネスロジックを実装します。
} else {
// 呼び出しは失敗しました。
// 失敗した呼び出しのエラーコードを取得します。
System.out.println(response.getBody().getCode());
// 失敗した呼び出しのエラーメッセージを取得します。
System.out.println(response.getBody().getErrorMessage());
}
} catch (TeaException error) {
// サーバーでビジネス例外が発生しました。
System.out.println(error.getCode());
System.out.println(error.getMessage());
} catch (Exception e) {
// その他のランタイム例外が発生しました。
e.printStackTrace();
}
完全なサンプルコード
これまでの説明に基づいて、パラメーター値をご自身の値に置き換えてください。
import com.aliyun.iot20180120.Client;
import com.aliyun.iot20180120.models.PubRequest;
import com.aliyun.iot20180120.models.PubResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import java.util.Base64;
public class IotSdkDemo {
/**
* AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。
*/
private static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ご自身の AccessKey ID。
.setAccessKeyId(accessKeyId)
// 必須。ご自身の AccessKey シークレット。
.setAccessKeySecret(accessKeySecret);
// エンドポイントについては、https://api.aliyun.com/product/Iot を参照してください
config.endpoint = "iot.cn-beijing.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) {
try {
Client client = createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
PubRequest request = new PubRequest()
.setIotInstanceId("${iotInstanceId}")
.setProductKey("${productKey}")
.setMessageContent(Base64.getEncoder().encodeToString("hello world".getBytes()))
.setTopicFullName("/${productKey}/${deviceName}/user/get")
.setQos(0);// QoS 0 と QoS 1 をサポートしています。
PubResponse response = client.pub(request);
// この呼び出しのリクエスト ID を取得します。
System.out.println(response.getBody().getRequestId());
// 呼び出しが成功したかどうかを確認します。
System.out.println(response.getBody().getSuccess());
// 呼び出しは成功しました。
if (response.getBody().getSuccess()) {
// クラウドからメッセージ ID を取得します。
System.out.println(response.getBody().getMessageId());
// ビジネスロジックを実装します。
} else {
// 呼び出しは失敗しました。
// 失敗した呼び出しのエラーコードを取得します。
System.out.println(response.getBody().getCode());
// 失敗した呼び出しのエラーメッセージを取得します。
System.out.println(response.getBody().getErrorMessage());
}
} catch (TeaException error) {
// サーバーでビジネス例外が発生しました。
System.out.println(error.getCode());
System.out.println(error.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
付録:サンプルコード
IoT Platform クラウド SDK サンプルセンターにアクセスして、API 呼び出しのサンプルコードを表示またはダウンロードします。サンプルは、Java、Python、PHP、Node.js、Go、C++、.NET の SDK に対応しています。
Alibaba Cloud OpenAPI Developer Portal は、オンライン API デバッグツールを提供しています。 [API Debugging] ページで、API 呼び出しを検索してテストできます。ポータルは、入力したパラメーターに基づいて、さまざまな言語の SDK サンプルコードを自動的に生成します。生成されたコードは [SDK Sample] タブ、レスポンスは [Result] タブで確認できます。