Запрос может выполняться синхронно и асинхронно:
Синхронные запросы. Возвращают значения после выполнения метода. Например, при запросе к удалённой базе данных метод долго выполняется и блокирует вызывающий поток. Пока приложение не обратится к базе данных и не скачает таблицу, другие кнопки будут недоступны;
Асинхронные запросы. Не возвращают никакого значения и программа переходит к следующему методу. Ответ приходит по мере готовности.
Для выполнения аутентификации синхронно или асинхронно на сервере мобильной платформы создайте приложение «AsynchronousRequestActivity», в котором используется метод auth, реализованный в модуле AuthAPI.
Приложение «AsynchronousRequestActivity» состоит из одного экрана и кнопок:
«SYNCHRONOUS». Выполнение синхронной аутентификации;
«ASYNCHRONOUS». Выполнение асинхронной аутентификации.
Для просмотра результата работы приложения используйте интерактивный пример:
Нажмите любую кнопку
public class AsynchronousRequestActivity extends AppCompatActivity {
private static final String MY_URL = "https://testmasterfmp.fsight.cloud/";
private static final VersionAPI MY_VERSION_API = VersionAPI.V_1;
private static final String MY_ENVIRONMENT = "Leonid_environment";
private static final String MY_PROJECT = "Leonid_project";
private static final String MY_VERSION = "v1";
private static final String MY_LOGIN = "Leonid";
private static final String MY_PASSWORD = "123123";
private static final String TAG = "AsynchronousRequest";
private HyperHive hyperHive;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asynchronous_request);
Handler uiHandler = new Handler();
hyperHive = new HyperHiveState(getApplicationContext())
.setHostWithSchema(MY_URL)
.setApiVersion(MY_VERSION_API)
.setEnvironmentSlug(MY_ENVIRONMENT)
.setProjectSlug(MY_PROJECT)
.setVersionProject(MY_VERSION)
.setHandler(uiHandler)
.buildHyperHive();
}
// Выполним метод аутентификации синхронно
public void authenticationSynchronous(View view) {
boolean status = hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).execute().isOk();
showStatus(status);
}
// Выполним метод аутентификации асинхронно
public void authenticationAsynchronous(View view) {
// Реализуем анонимный интерфейс Callback
hyperHive.authAPI.auth(MY_LOGIN, MY_PASSWORD, true).enqueue(new Callback<basestatus>() {
@Override
// Получим статус выполнения
public void onResponse(Call<basestatus> call, BaseStatus baseStatus) {
showStatus(baseStatus.isOk());
}
@Override
public void onFailure(Call<basestatus> call, Throwable throwable) {
Log.d(TAG, "onFailure: ");
}
});
}
public void showStatus(boolean status) {
Log.d(TAG, "auth: " + status);
Toast.makeText(this, "auth: " + status, Toast.LENGTH_LONG).show();
}
}
См. также: