Здравствуйте, хабровчане!
Когда занимаешься разработкой сетевых приложений под платформу Android, понимаешь, что одно и другое приложение похоже друг на друга. С этой мыслью у большинства разработчиков инициализируется и другая мысль — «Почему бы мне не использовать какие-либо готовые решения, ведь явно моя задача не нова?». С этого момента начинается поиск подходящих библиотек для решения актуального на сей момент вопроса. По истечению некоторого времени — профит. Казалось бы всё хорошо, ведь библиотека найдена и осталась только написать реализацию решения текущего вопроса. И тут начинаются проблемы. Связаны они с управлением потоков, да и вообще Java никогда не славилась своей компактностью, все «волшебство» должно быть реализовано непосредственно разработчиком. Порой я нахожу в этом только положительные стороны, ведь логика каждого проекта отличается друг от друга кардинально. Вам постоянно приходится переключатся с потока на поток, что не очень удобно и как описывалось ранее — получается громоздко. Решение данной проблемы было реализовано и ранее, но не столь компактно, как хотелось бы. На помощь приходит библиотека для работы с HTTP — GridmiAPI. Это максимально компактное решение, которое в свою очередь позволяет оперировать данными в реальном времени.
Вся работа библиотеки начинается с её инициализации. Инициализация требуется единожды. Под инициализацией понимается следующая конструкция:
Вот и всё! Библиотека готова к полноценному использованию.
Чтобы выполнить первый запрос к серверу, требуется написать всего несколько строк кода и требуемые нами данные у нас. Не верите? Смотрите:
Поздравляю! Это Ваш «Hello world!» с использованием данной библиотеки. Давайте рассмотрим два переписанных метода класса GridmiAPI.Handler.OUT. Для начала следует написать, что эти два метода вызываются в основном потоке, поэтому по завершению запроса нет смысла обращаться к активности чтобы запустить основной поток. Вы просто берете JSON к примеру и меняете текст TextView. Все просто.
Очень часто приходится отправлять файлы на сервер. Вновь головная боль? Никак нет. Библиотека GridmiAPI позволяет очень просто отправить файл без головной боли. Чуть больше строк чем в примере выше, но все так же компактно. Вот как можно отправить файл:
Мы рассмотрели самые популярные задачи, более детально Вы можете ознакомится на странице данной библиотеки на GitHub — GridmiAPI. Работать с данной библиотекой комфортно. Оцените сами. Спасибо Вам за то, что проявили интерес к данной статье!
Библиотека GridmiAPI
Документация / ReadMe.md
Когда занимаешься разработкой сетевых приложений под платформу Android, понимаешь, что одно и другое приложение похоже друг на друга. С этой мыслью у большинства разработчиков инициализируется и другая мысль — «Почему бы мне не использовать какие-либо готовые решения, ведь явно моя задача не нова?». С этого момента начинается поиск подходящих библиотек для решения актуального на сей момент вопроса. По истечению некоторого времени — профит. Казалось бы всё хорошо, ведь библиотека найдена и осталась только написать реализацию решения текущего вопроса. И тут начинаются проблемы. Связаны они с управлением потоков, да и вообще Java никогда не славилась своей компактностью, все «волшебство» должно быть реализовано непосредственно разработчиком. Порой я нахожу в этом только положительные стороны, ведь логика каждого проекта отличается друг от друга кардинально. Вам постоянно приходится переключатся с потока на поток, что не очень удобно и как описывалось ранее — получается громоздко. Решение данной проблемы было реализовано и ранее, но не столь компактно, как хотелось бы. На помощь приходит библиотека для работы с HTTP — GridmiAPI. Это максимально компактное решение, которое в свою очередь позволяет оперировать данными в реальном времени.
Рабочий процесс
Вся работа библиотеки начинается с её инициализации. Инициализация требуется единожды. Под инициализацией понимается следующая конструкция:
GridmiAPI.init("https://habr.com/API/", 8000, JSONObject.class);
- Адрес конечного узла обработки запросов
- Время ожидания ответа сервера
- Класс, к типу которого должен быть приведен ответ сервера
Вот и всё! Библиотека готова к полноценному использованию.
Первый запрос к серверу
Чтобы выполнить первый запрос к серверу, требуется написать всего несколько строк кода и требуемые нами данные у нас. Не верите? Смотрите:
GridmiAPI.onRequest(this, new GridmiAPI.Request("profile/get"), new GridmiAPI.Handler.OUT() {
@Override
protected void onSuccess(GridmiAPI.Response response) {
Log.d("TagGridmiAPI", "result = " + ((JSONObject) response.getData()).toString());
}
@Override
protected void onFailed(Exception exception) {
Log.d("TagGridmiAPI", "exception = " + exception.getMessage());
}
}).start();
Поздравляю! Это Ваш «Hello world!» с использованием данной библиотеки. Давайте рассмотрим два переписанных метода класса GridmiAPI.Handler.OUT. Для начала следует написать, что эти два метода вызываются в основном потоке, поэтому по завершению запроса нет смысла обращаться к активности чтобы запустить основной поток. Вы просто берете JSON к примеру и меняете текст TextView. Все просто.
Отправить файл на сервер
Очень часто приходится отправлять файлы на сервер. Вновь головная боль? Никак нет. Библиотека GridmiAPI позволяет очень просто отправить файл без головной боли. Чуть больше строк чем в примере выше, но все так же компактно. Вот как можно отправить файл:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data == null || data.getData() == null) return;
try {
// Экземпляр запроса к серверу
GridmiAPI.Request request = new GridmiAPI.Request("POST", "photo/add");
// Создаем экземпляр многосоставного тела запроса
GridmiAPI.Multipart multipart = new GridmiAPI.Multipart(getContentResolver());
multipart.appendData("photo", data.getData());
// Установить тело запроса
request.setBody(multipart);
// Отправить запрос
GridmiAPI.onRequest(this, request, new GridmiAPI.Handler.OUT() {
@Override
protected void onSuccess(GridmiAPI.Response response) {
try {
// Получить результат с тела запроса
boolean result = ((JSONObject) response.getData()).getBoolean("result");
// Уведомление
Toast.makeText(MainActivity.this, result ? "Загружено!" : "Ошибка!", Toast.LENGTH_LONG).show();
} catch (Exception exception) {
this.onFailed(exception);
}
}
@Override
protected void onFailed(Exception exception) {
// Уведомление о текущем исключении
Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
}
}).start();
} catch (Exception exception) {
Toast.makeText(this, exception.getMessage(), Toast.LENGTH_LONG).show();
}
}
Заключение
Мы рассмотрели самые популярные задачи, более детально Вы можете ознакомится на странице данной библиотеки на GitHub — GridmiAPI. Работать с данной библиотекой комфортно. Оцените сами. Спасибо Вам за то, что проявили интерес к данной статье!
Ссылки
Библиотека GridmiAPI
Документация / ReadMe.md