Всем привет! Имеется проект приложения в котором сетевые запросы выполняются с помощью Retrofit, а результат парсится через Jsoup. (У сайта нет API, пришлось парсить HTML). Проект делится на 2 package: api и application, между которыми создан интерфейс SomeSiteSDK. Вот пример обращения к API из пакета приложения
SomeSiteSDK.messages().send(userId, "Message text"). execute(new SimpleRequestListener(){
@Override
public void onSuccess(){}
@Override
public void onError(int type){}
}
Каждый метод класса SomeSDK возвращает экземпляр класса со всеми методами, относящимися к определенной, так скажем, группе, например SDKMessages, SDKFriends. Все методы таких групповых классов на вход принимают параметры запроса (id пользователя, и т.д) и возвращают экземпляр класса (1 класс = 1 запрос). У каждого такого класса есть метод execute куда надо передать интерфейс слушателя запроса. Это может быть или SimpleRequestListener с методом onSuccess, если запрос обычный, для совершения действия и ничего не возвращает или же, что-то возвращающий к примеру FriendsRequestListener, возвращающий коллекцию из моделей Friend в метод onResponse. У любого интерфейса есть метод onError куда приходит тип ошибки.
Теперь самое интересное: во всех классах Request идет обращение к Retrofit, происходит парсинг данных. В пакете api реализован Retrofit, там и DocumentConverterFactory, который каждый ответ от сервера конвертирует в Document через Jsoup, там и интерфейс ApiService в котором лежат все запросы.
Получается такая система
Activity, Fragment > (RequestListener) -> SomeSDK > (Callback) > Retrofit > (RequestListener) > Activity, Fragment
Хорошо ли получилось? Чего бы вы изменили? Было бы замечательно заменить конвертеры с Document на конечные данные, но суть в том, что один запрос к SomeSDK порождвет несколько запросов к Retrofit, а работу с API хочется сделать минимумом кода
Вообщем, жду критики!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости