我读了protocol buffer (protobuf)是语言中立的,用于序列化结构化数据的平台中立的可扩展机制。我想用retrofit2.0来使用它。我没有看到使用protobuf转换器的任何改造示例。如何在改造中使用Protobuf转换器
请建议有关如何在Android上使用它retrofit2.0
即使它比标准的XML和JSON更快,更简单,为什么开发商没有得到利用它的一些想法?
我读了protocol buffer (protobuf)是语言中立的,用于序列化结构化数据的平台中立的可扩展机制。我想用retrofit2.0来使用它。我没有看到使用protobuf转换器的任何改造示例。如何在改造中使用Protobuf转换器
请建议有关如何在Android上使用它retrofit2.0
即使它比标准的XML和JSON更快,更简单,为什么开发商没有得到利用它的一些想法?
从我所理解的你所问的问题中,我将给出一个粗略的答案。
的基本设置为在使用的Android改造需要:
我假设你知道如何处理XML和JSON请求。我使用THIS参考来学习XML的东西。 使用protobuf转换器的想法与GSON/simpleXML转换器相同。唯一的区别是用于调整请求数据的POJO。 Java中protobuf的本质是它已经成为POJO。
执行异步/同步请求时,响应返回到Response
类中,并且该信息位于响应的body()
方法中。
作为一个例子,我将只使用Person protobuf,它位于Google site的Protocol Buffers文档中。
一步一步:
第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
假设您已经编译了一个名为PersonProto.java
的protobuf Java类文件。这将是你的POJO。 (这很容易)
最后,执行异步调用(比如,在你的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");
}
});
}
希望这回答了你的问题,我有种把它一起TBH。
我知道这个问题前一段时间问过,有没有进展?但由于没有答案,我想我可以参加。 你有使用协议缓冲区的经验吗? – mastrgamr
我这样做是为了减少加载大内容所花费的时间,而不是用于项目。我见过Protobuf 2.0有不同的转换器,Protobuf Converter就是其中之一,我没有找到Protobuf Converter的用法 – ABI