Я пытался использовать Android SDK, сгенерированный AWS API Gateway, последние два дня без особого успеха. Я следовал инструкциям по созданию простого калькулятора с использованием лямбда-функции, созданию API простого калькулятора и интеграции их двух.
Используя консоль API, я могу проверить POST, и она работает нормально, я получаю правильный результат, получая два цифры и операция. Мои проблемы начинаются, когда я генерирую SDK для Android.
Следуя этому руководству (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk-android.html), я создал файлы .jar и добавил их в папку "libs" в Android Studio вместе с зависимостями.
Однако, когда я вызываю метод client.rootPost (), я получаю сообщение об ошибке. Не копируя весь журнал ошибок, ошибка выглядит следующим образом:
at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:118)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy3.execute(Unknown Source)
at com.example.awstest.MainActivity.onCreate(MainActivity.java:52)
Мой код в MainActivity выглядит следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
ApiClientFactory factory = new ApiClientFactory();
final SimpleCalculatorAPIClient client = factory.build(SimpleCalculatorAPIClient.class);
Input body = new Input();
body.setA(new BigDecimal(1));
body.setB(new BigDecimal(1));
body.setOp("+");
Result output = client.rootPost(body); //LINE 52, where the error points to
String result = output.getOutput().getC().toString();
}
В моем build.gradle у меня есть следующие зависимости:
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.jar'], dir: 'app/libs')
implementation 'com.amazonaws:aws-android-sdk-core:2.16.11'
implementation 'com.amazonaws:aws-android-sdk-apigateway-core:2.16.11'
Последние две зависимости НЕ являются частью учебника, но я обнаружил, что они нужны мне для вызова класса "ApiClientFactory" из другого вопроса, размещенного здесь. Что заставляет меня верить, что я что-то очень очевидное упускаю Следования только вышеприведенному уроку недостаточно, и предполагается, что вы уже знаете кое-что, чего я не знаю.
Есть идеи, что мне здесь не хватает?