foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

AndroidからAWS API Gatewayへ接続する(Cognito認証なし)

AndroidからAWS API Gatewayへ接続する(Cognito認証なし)

環境

問題

解決方法

SDKの準備

AWSコンソールからSDKのZIPファイルをダウンロードする。

  • ダウンロードする時の入力項目
    • 「グループ ID」
      • SDK作成者のパッケージ名。
      • 例: com.example.foo
    • 「Invoker パッケージ」
    • SDK本体のパッケージ名。
    • 例: com.example.foo.apigateway
    • アーティファクト ID」
      • 後でSDKをビルドした時のJARファイル名の一部になる。
      • 後でSDKを利用する際の *ApiClient クラスのクラス名プレフィックスになる。
    • アーティファクトバージョン」
  • ダウンロードしたファイルを展開する。
  • 展開先でビルドする。
    • mvn install
    • mvnでプロキシが越えられない時は?
      • mavenのインストール先/conf/settings.xml を編集する。
  • ビルドしたら下記ファイルが出来ている。
  • ビルドしたモジュールをプロジェクトへ追加する。
    • ビルドしたファイルを Android Studio の モジュール/libs にコピーする。
    • Android Stduioを起動してプロジェクトビューから
    • コピーしたJARファイルを右クリックして、「Add As Library...」をクリックする。

SDKの呼び出し側の実装

コンテキストを取得する。 Instrumentation Test の場合は下記で取得できる。

context = InstrumentationRegistry.getInstrumentation().getTargetContext();

ファクトリを生成する。

factory = new ApiClientFactory();

クライアントを構築する。

AndroidApigatewayExampleClient client = factory.build(AndroidApigatewayExampleClient.class);

APIを呼び出す。

Model model = client.[ハイフンを単語区切りとしたリソース名]+[リクエストメソッド名](引数, ...);
assertThat(model.getId(), is(Integer.valueOf(42)));

参考

http://dev.classmethod.jp/cloud/aws/api-gateway-with-android/