关于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!谢谢!!!!
一下是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!谢谢!!!!
...全文
相关推荐
利用spring整合jersey和Protobuf,搭建REST web服务
利用spring整合了Jersey和Protobuf,搭建了一个简单的Rest web service的工程,仅当作学习; 客户端是用python写的一个简单工程;
Protobuf传输协议解析与应用
Protocol Buffers(protobuf)是一种轻量级、高效的数据交换格式和接口描述语言,由Google开发并开源。它被广泛应用于各种分布式系统中,如RPC(远程过程调用)、数据存储与通信协议等。本文将深入探讨protobuf的工作原理、优势、使用场景以及与其他格式的比较。
spring boot protobuf demo
spring boot protobuf demo
Springboot protobuf样例
Springboot protobuf样例
socket通过传输protobuf通信
1. 客户端a和b通过socket通信 2. 通信中为了解决字节对齐使用profobuf来通信 3. linux下的软件开发 4. 测试日志打印都存在 5. 自己调试ok的代码,直接可以下载下来使用


