Как получить выгоду от шлюза aws api в студию android (java)

Я не понимаю, почему мои выходные данные, полученные моим приложением Android от шлюза API, похожи на этот dummypackage.model.Resultur@d0cce8e, а не в строке или json. как я могу получить читаемые данные?

Я установил фиктивную лямбда-функцию, которая отправляет ответ.

          return {
        statusCode: 200,
        headers: {
            "Access-Control-Allow-Origin": "*"
        },
        body:1
    }

когда вызывается метод API get.

Это модель, которую я установил в теле ответа моего метода:

      {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type":"object",
    "properties":{
        "output":{
            "$ref": "https://apigateway.amazonaws.com/restapis/3pzxzxz27/models/Output"
 
        }
    },
    "title":"Result"
}

Выходная модель

      {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type":"object",
    "properties":{
        "output":{
            "$ref": "https://apigateway.amazonaws.com/restapis/3pvgc7ic27/models/Output"
 
        }
    },
    "title":"Result"
}

Класс «resultur», созданный в SDK:

      // Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package dummypackage.model;

import com.google.gson.annotations.SerializedName;

public class Resultur {
    @SerializedName("output")
    private Output output = null;

    public Resultur() {
    }

    public Output getOutput() {
        return this.output;
    }

    public void setOutput(Output output) {
        this.output = output;
    }
}

И класс вывода таков:

      //
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package dummypackage.model;

import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;

public class Output {
    @SerializedName("Output")
    private BigDecimal output = null;

    public Output() {
    }

    public BigDecimal getOutput() {
        return this.output;
    }

    public void setOutput(BigDecimal output) {
        this.output = output;
    }
}

Я использовал этот код в своей основной деятельности, чтобы получить результат:

      package com.example.apiapplication3;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.amazonaws.mobileconnectors.apigateway.ApiClientFactory;

import org.json.JSONObject;

import dummypackage.DummyapiClient;
import dummypackage.model.Resultur;


public class MainActivity extends AppCompatActivity {

    Button button;

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ApiClientFactory factory = new ApiClientFactory();
        final DummyapiClient client = factory.build(DummyapiClient.class);
        button = findViewById(R.id.button);

        String values;


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Thread thread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try  {
                          Resultur output = client.messageGet();


                         
                            runOnUiThread(new Runnable() {
                                public void run() {
                                    Toast.makeText(MainActivity.this, output, Toast.LENGTH_SHORT).show(); // Display the value in a Toast message

                                }
                            });
//                          Log.w("output", "s" + output);

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
                thread.start();

            }
        });

    }
}

Что я делаю не так? также, где можно научиться использовать aws api sdk для android? (я следовал всем инструкциям документации aws, но все равно застрял)

1 ответ

Таким образом, вам необходимо переопределить метод toString() в ваших классах Resultur и Output и использовать output.getOutput().toString() при отображении всплывающего сообщения. Чтобы узнать, как использовать AWS API SDK для Android, вы можете обратиться к https://aws-amplify.github.io/aws-sdk-android/docs/reference/ .

Другие вопросы по тегам