关于Java调用protobuf,传输请求和解析。

fst018666 2013-09-26 09:40:55
最近需要请求别人服务器的数据,那边是用protobuf做的协议,我传递请求参数遇到问题请大神解答!
一下是BaseMsg.proto代码:
message BaseRequest
{
optional int32 cmd = 1[default = 0];
optional int32 login = 2[default = 0];
extensions 16 to 2047;
}
message BaseResponse
{
optional string packet = 1;
optional int32 status = 2[default = 0];
extensions 16 to 2047;
}

一下是另一个Mt4Stat.proto代码
message BaseInfoRequest
{
optional int32 period = 1[default = 7];
optional int32 u_type = 2[default = 1];
}
// Request cmd=101
extend BaseRequest
{
optional BaseInfoRequest baseinfo_req = 16;
}
message BaseInfoResponse
{
optional double plratio = 1;
optional double acrate = 2;
optional double drawdown = 3;
optional double profit = 4;
optional int32 log_time = 5;
}
// Response for cmd=101 (packet=BaseInfo)
extend BaseResponse
{
optional BaseInfoResponse base_data = 16;
}
-------------------------------------------------------------
下面是java代码
BaseRequest 请求参数,BaseInfoRequest具体的字段
BaseMsg.BaseRequest.Builder baseBuilder = BaseMsg.BaseRequest.newBuilder();
baseBuilder.setCmd(101);
baseBuilder.setLogin(22606546);
BaseInfoRequest继承BaseRequest,我如何把
Mt4Stat.BaseInfoRequest baseInfor = Mt4Stat.BaseInfoRequest.newBuilder().setPeriod(1).setUType(1).build();设置参数后,
把baseInfor 打包进baseBuilder
应该是用baseBuilder.setExtension(arg0, arg1);但是里面参数怎么设置的?
之后发送是:
BaseMsg.BaseRequest req = baseBuilder.build();
req.writeTo(so.getOutputStream()); 是这样吗?
然后返回数据解析是这样的?
Mt4Stat.BaseInfoRequest response = Mt4Stat.BaseInfoRequest.parseFrom(so.getInputStream());
response .get
optional double plratio = 1;
optional double acrate = 2;
optional double drawdown = 3;
optional double profit = 4;
optional int32 log_time = 5; 这些参数吗?
求指点!在线等!帮忙 小弟!QQ372728593!谢谢!!!!
...全文
1128 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧