AWS APIGateway сгенерировал триггеры ответа SDK NullPointerException, вызванные ApiClientException - PullRequest
0 голосов
/ 22 января 2019

Я работаю с созданным API Gateway SDK в Java для Android, и хотя другие конечные точки работают нормально, эта конкретная конечная точка дает мне исключение NullPointerException. При отладке я обнаружил, что это исключение NullPointerException было вызвано ApiClientException: Cannot evaluate $Proxy1.toString(). В частности, в строке 14 (MyEndPointClient client = factory.build(MyEndPointClient.class)), где заводской строитель приходит и строит клиента. Так что похоже на проблему с заводским застройщиком. Смотрите код ниже.

class MyEndPointGet extends AsyncTask<Void, EndPointRes, EndPointRes>{

    private String tkn;
    private String id;

    public ResDetailsGet(String tkn, String id){
        this.tkn = tkn;
        this.id = confID;
    }

    @Override
    protected EndPointRes doInBackground(Void... objects) {
        ApiClientFactory factory = new ApiClientFactory();
        MyEndPointClient client = factory.build(MyEndPointClient.class);
        EndPointRes detailres = myNewClient.detailstokenIdGet(this.tkn, this.id);
        return detailres;
    }

    public void onPostExecute(EndPointRes res){
        EndPointResDetails details = res.getDetails();
        updateView(details);
    }
}

Когда я исследовал это онлайн, решения должны были установить MyEndPointClient на final и дать моему приложению доступ к Интернету. Приложению было предоставлено интернет-разрешение, и, несмотря на то, что MyEndPointClient равно final или нет, ошибка все равно появляется. У кого-нибудь еще была эта проблема? Я что-то пропускаю?

UPDATE

Не решение, а другой подход к проблеме. Я поменял AsyncTask на реализацию интерфейса Runnable с кодом ниже:

class ResDetailsRunnable implements Runnable{

    String tkn, id;
    public ResDetailsRunnable(String tkn, String id){
        this.tkn = tkn;
        this.id = id;
    }

    @Override
    public void run() {
        ApiClientFactory factory = new ApiClientFactory();
        MyEndPointClient client = factory.build(MyEndPointClient.class);
        EndPointRes detailres = myNewClient.detailstokenIdGet(this.tkn, this.id);
        EndPointResDetails details = res.getDetails();
        updateView(details);
    }
}

Когда я запускаю это, я получаю ApiClientException, как и раньше, но теперь он говорит (Service: null; Status Code: 0; Error Code: null; Request ID: null). Это заставляет меня думать, что запрос не проходит, и он не устанавливает соединение, хотя я делаю то же самое для вызовов, выполняемых до / details GET.

...