Из чего я понимаю, что вы просите, я дам грубый ответ.
Базовый набор для использования Дооснащения в Android требует:
- An Interface - определить API вызовов
- A Service - для создания запроса HTTP оконечных
- POJO - для адаптации HTTP-запроса (обычно запроса GET) к полезным данным в приложении
Я предполагаю, что вы знаете, как обрабатывать запросы XML и JSON. Я использовал ссылку THIS, чтобы узнать материал XML. Идея использования преобразователя protobuf такая же, как преобразователи GSON/simpleXML. Единственное различие заключается в том, что POJO используется для адаптации данных запроса. Характер protobuf в Java заключается в том, что он уже настроен в некотором смысле как POJO.
При выполнении ваших асинхронных/синхронных запросов ответ возвращается в классе Response
, а информация находится в методе ответа body()
.
В качестве примера я просто использую Лицо protobuf, которое находится в документации для буферов протокола на Google site.
Шаг за шагом:
Шаг 1 - Интерфейс
public interface IPersonService {
@GET("/api/v1.0/person/{personId}")
Call<PersonProto> getPerson(String personId);
}
Шаг 2 - Служба
private IPersonService setupAdapter() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_URL_STRING)
.addConverterFactory(ProtoConverterFactory.create())
.build();
return retrofit.create(IPersonService.class);
}
Шаг 3 - POJO
Допустим, у вас есть скомпилированный файл класса Java protobuf с именем PersonProto.java
. Это будет ваше ПОЖО. (Это было легко)
Наконец, выполнить асинхронный вызов (скажем, в классе MainActivity):
public void getUser(String personId) {
setupAdapter().getPerson(personId).enqueue(new Callback<PersonProto>() {
@Override
public void onResponse(Response<PersonProto> response, Retrofit retrofit) {
Log.i(LOG_TAG, "We hit the server");
if(response.body() != null) {
//respoonse.body() is your PersonProto Object
Log.d(LOG_TAG, reponse.body().getName()); //If you see this, you're all set to consume your API
}
}
@Override
public void onFailure(Throwable t) {
Log.e(LOG_TAG, "We did not hit the server");
}
});
}
Надежда это ответило на ваш вопрос, я как бы бросил его вместе ТБМ.
Я знаю, что этот вопрос задавали некоторое время назад, какой-то прогресс? Но так как ответов нет, я решил, что могу перезвонить. У вас есть опыт работы с буферами протокола? – mastrgamr
Я сделал это с любопытством, чтобы сократить время, затрачиваемое на загрузку большого контента, не используемого для проектов. Я видел, что Protobuf 2.0 имеет разные конвертеры, Protobuf Converter является одним из них, я не нашел использования Protobuf Converter – ABI