当前位置:编程学习 > JAVA >>

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

最近需要请求别人服务器的数据,那边是用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!谢谢!!!!
protobuf
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,