Использование AsyncHttpClient внутри функций слушателя (и повторное использование этих функций) - PullRequest
0 голосов
/ 28 января 2019

Я использую AsynHttpClient от LoopJ для своего приложения для Android / Java.

После первого блока команд я выполняю входящий вызов на сервер.Если все в порядке, я вызываю другие API для извлечения данных.

Сейчас я вызываю следующий API после того, как предыдущий был закончен нормально.Только после того, как последний звонок сделан, я отправляю приложение к следующему намерению.Это лучший подход?

Второй вопрос, как бороться с API-интерфейсом fail-send_refresh_call-retry ??

Наконец, есть ли способ написать только одного слушателя, который достаточно умен, чтобыузнать, когда на все запросы дан ответ, и он переходит к следующему намерению?

public void clickLogin(View view) {

[...]

    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams rp = new RequestParams();
    rp.add("grant_type", "password");
    rp.add("username", String.valueOf(txtUsuario.getText()));
    rp.add("password", String.valueOf(txtSenha.getText()));
    rp.add("client_id", "mobileApp");
    HttpUtils.postEncoded("token", rp, new JsonHttpResponseHandler() {

        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
            super.onSuccess(statusCode, headers, response);

            [...]

            HttpUtils.get(getApplicationContext(),"api/coins", headers, reqparams, new JsonHttpResponseHandler() {

                @Override
                public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                    super.onSuccess(statusCode, headers, response);
                    [...]
                    HttpUtils.get(getApplicationContext(),"api/travels", headers, reqparams, new JsonHttpResponseHandler() {

                        @Override
                        public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                            super.onSuccess(statusCode, headers, response);

                            Intent intent = new Intent(getApplicationContext(), TravelsActivity.class);
                            startActivity(intent);
                        }

                        @Override
                        public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                            super.onFailure(statusCode, headers, throwable, errorResponse);
                            if (statusCode == 401) {
// *** Treat unauthorized. Call other API to refresh token ***
                            }
                            else {
                                e.printStackTrace();
                            }
                        }
                    }
                }

                @Override
                public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                    super.onFailure(statusCode, headers, throwable, errorResponse);
                    if (statusCode == 401) {
// *** Treat unauthorized. Call other API to refresh token ***
                    }
                    else {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
...