IoT Platform SDK for Java を使用すると、Java プログラムを使用して IoT Platform リソースを効率的に管理できます。SDK を Maven プロジェクトに依存関係として追加できます。また、インストールパッケージをオンプレミスディレクトリにダウンロードして、SDK をインストールすることもできます。
SDK のインストール
Java 開発環境をインストールします。
Java 公式 Web サイトから Java インストールパッケージをダウンロードし、プロンプトに従って Java をインストールします。Java 8 以降をインストールすることをお勧めします。
IoT Platform SDK for Java をインストールします。
Apache Maven 公式 Web サイトから Maven インストールパッケージをダウンロードします。
Maven プロジェクトに次の依存関係を追加します。
最新バージョンの IoT Platform SDK for Java の依存関係:
<!-- https://mvnrepository.com/artifact/com.aliyun/iot20180120 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>3.0.8</version> </dependency>
Alibaba Cloud SDK for Java の依存関係:
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.2.2</version> </dependency>
SDK for Java のソースコードの詳細については、「alibabacloud-java-sdk」をご参照ください。
SDK の初期化
config オブジェクトを作成し、アクセスキー ID、アクセスキー シークレット、リージョン ID などの SDK 初期化情報を格納します。
クライアント
com.aliyun.iot20180120.Client(config)
構成 インスタンスを作成し、 メソッドを呼び出して、 から SDK 情報を読み込みます。その後、SDK が初期化されます。後続の API 呼び出しの リクエスト パラメーターと レスポンス パラメーターは、
com.aliyun.iot 20180120.models
から取得されます。
たとえば、中国 (上海) リージョンで SDK を使用する場合は、次のコードを使用して SDK を初期化できます。本番環境では、IoT Platform がアクティブ化されているリージョンを選択する必要があります。
Config config = new Config();
// Alibaba Cloud アカウントの AccessKey ID。
config.accessKeyId = "<your accessKey>";
// Alibaba Cloud アカウントの AccessKey Secret。
config.accessKeySecret = "<your accessSecret>";
// リージョンの ID。
config.regionId = "cn-shanghai";
// SDK を初期化します。
Client client = new com.aliyun.iot20180120.Client(config);
パラメーター | 説明 |
accessKeyId | Alibaba Cloud アカウントの アクセスキー ID です。 Alibaba Cloud 管理コンソールの アクセスキーのペア ページにアクセスして、アクセスキーのペアを作成または表示できます。 |
accessKeySecret | Alibaba Cloud アカウントの アクセスキーシークレット。 |
regionId | IoT Platform インスタンスが存在するリージョンの ID です。リージョン ID は、サービス アクセス用のエンドポイントで使用されます。エンドポイントは iot.${RegionId}.aliyuncs.com フォーマットです。 IoT Platform コンソールの左上隅にリージョンが表示されます。 リージョン ID の形式の詳細については、「サポートされているリージョン」をご参照ください。 |
リクエストの開始
SDK は、各 API 操作に対して 2 つのクラスをカプセル化します。${API name}+"Request"
形式の名前を持つクラスはリクエストを示し、${API name}+"Response"
形式の名前を持つクラスはレスポンスを示します。
手順
SDK を初期化します。詳細については、「SDK の初期化」をご参照ください。
リクエスト
${API名} + "Request"
クラスの インスタンスを生成して、API リクエストを作成します。set+${リクエスト パラメーター}
メソッドを リクエスト インスタンスで呼び出して、リクエスト パラメーターを指定します。レスポンス
${API名} + "Response"
クラスの${API名}(リクエスト)
クライアント本文ヘッダー インスタンスを作成してレスポンスを取得します。 インスタンスの メソッドを呼び出して、API リクエストに対するレスポンスを取得します。レスポンスには、サーバーから返された と が含まれます。本文レスポンス
get+${[レスポンス パラメーター]}
インスタンスの オブジェクトを使用し、 メソッドを呼び出して、レスポンスパラメーターの値を取得します。たとえば、
response.getBody.getSuccess()
メソッドが呼び出され、Success パラメーターの値が取得されます。このパラメーターは一般的なレスポンスパラメーターであり、呼び出しが成功したかどうかを示します。一般的なレスポンスパラメーターには、RequestId、ErrorMessage、および Code も含まれます。catch()
メソッドを呼び出して、例外を処理します。
IoT Platform の API 操作の詳細については、「関数別の操作リスト」をご参照ください。各 API 操作のリクエストパラメーターとレスポンスパラメーターの詳細については、API リファレンスをご参照ください。
次の例は、Pub 操作を呼び出して Topic にメッセージをパブリッシュする方法を示しています。リクエストパラメーターの詳細については、「Pub」をご参照ください。
次のサンプルコードでは、${iotInstanceId}
はインスタンスの ID を指定します。 IoT Platform コンソール の [概要] ページでインスタンスの [ID] を表示できます。
インスタンスに ID がある場合は、このパラメーターに ID を指定する必要があります。指定しないと、呼び出しは失敗します。
インスタンスに [概要] ページまたは ID が生成されない場合は、このパラメーターを構成する必要はありません。 IotInstanceId パラメーターに関連するリクエストコードを削除するか、パラメーターに空の文字列(
""
)を指定する必要があります。指定しない場合、呼び出しは失敗します。
IoT Platform インスタンスの詳細については、「概要」をご参照ください。インスタンスの購入方法の詳細については、「Enterprise Edition インスタンスを購入する」をご参照ください。詳細については、「IoT Platform インスタンスに関するよくある質問」をご参照ください。
PubRequest request = new PubRequest()
.setIotInstanceId("${iotInstanceId}")
.setProductKey("${productKey}")
.setMessageContent(Base64.getEncoder().encodeToString("hello world".getBytes()))
.setTopicFullName("/${productKey}/${deviceName}/user/get")
.setQos(0); // QoS0 と QoS1 がサポートされています。
try {
PubResponse response = client.pub(request);
// サーバーから返された本文とヘッダーを含むレスポンス。
// リクエストの ID を取得します。
System.out.println(response.getBody().getRequestId());
// 呼び出しが成功したかどうかを確認します。
System.out.println(response.getBody().getSuccess());
// 呼び出しが成功しました。
if (response.getBody().getSuccess()) {
// IoT Platform から送信されたメッセージの ID を取得します。
System.out.println(response.getBody().getMessageId());
// else 文。
} 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 Secret を使用してクライアントを初期化します。
*/
private static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.accessKeyId = accessKeyId;
config.accessKeySecret = accessKeySecret;
// リージョンの ID。
config.regionId = "cn-shanghai";
return new Client(config);
}
public static void main(String[] args) {
try {
Client client = createClient(accessKey, accessKeySecret);
PubRequest request = new PubRequest()
.setIotInstanceId("${iotInstanceId}")
.setProductKey("${productKey}")
.setMessageContent(Base64.getEncoder().encodeToString("hello world".getBytes()))
.setTopicFullName("/${productKey}/${deviceName}/user/get")
.setQos(0);// QoS0 と QoS1 がサポートされています。
PubResponse response = client.pub(request);
// リクエストの ID を取得します。
System.out.println(response.getBody().getRequestId());
// 呼び出しが成功したかどうかを確認します。
System.out.println(response.getBody().getSuccess());
// 呼び出しが成功しました。
if (response.getBody().getSuccess()) {
// IoT Platform から送信されたメッセージの ID を取得します。
System.out.println(response.getBody().getMessageId());
// else 文。
} 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 Explorer は、API 操作用のオンラインデバッグツールを提供します。API デバッグサンプルコードデバッグ結果 ページで、API 操作を検索し、API 操作を呼び出し、さまざまな SDK の API 操作のサンプルコードを生成できます。ページの右側にある タブで、SDK のサンプルコードを表示できます。 タブで、JSON 形式の実際のリクエスト URL とレスポンスを表示できます。