通常webapi实现通过http get/post请求,返回文本型的json,xml等字符串。本文以Tomcat8为web服务器,借助protobuf框架,响应二进制数据。
由于protobuf协议能跨语言,我们可以用java servlet实现服务端,C/C++实现客户端,达到各模块解耦目的。双方需设置ContentType为application/x-protobuf。
1. 准备proto文件
package qwd.kettas; // 请求结构 message CTestReq { optional uint32 ShopId = 1; // 店铺ID } message CProduct { optional uint32 Id = 1; // 商品ID optional bytes Name = 2; // 商品名称 optional double price = 3; // 商品价格 } // 响应结构 message CTestResp { optional int32 Total = 1; // 商品总数 repeated CProduct Product = 2; // 商品数组 }
2. Java Servlet服务
/**
* Servlet 服务实现,接收post请求,响应protocol buffer二进制数据
*/
protected void service( Http