对接方给了个接口文档
| 说明 | 类型 | 序号 | 
|---|---|---|
| 姓名 | STRING | 4 | 
| 性别 | INT | 5 | 
| 生日 | STRING | 7 | 
| 手机号码 | STRING | 8 | 
只有 pb 说明,没有源文件 我按照这个文档自己建一个 pb 文件可以么? 关机我不知道他们的 key 名字,只有中文说明 如果建的 key 不一样可以解析么
message Request {
    string name = 4;
    int32 sex = 5;
    string birthday = 7;
    string phone = 8;
}
|      1TtTtTtT      2021-09-15 15:48:56 +08:00 只有序号有用,名字叫啥只是跟你生成的代码有关,和传输的数据无关。 | 
|  |      2Jokerrrrrr      2021-09-15 15:50:32 +08:00 还有这样对接的嘛 | 
|      3MegrezZhu      2021-09-15 15:56:14 +08:00 大概可以用 Reflection 或者 Descriptor 强行搞? 但为啥只给 pb 说明呢…… | 
|  |      4virusdefender      2021-09-15 16:06:14 +08:00 去要啊,可能就是忘了给了 | 
|      5securityCoding      2021-09-15 16:15:59 +08:00 通用的 ,v2/v3 试一下就可以 | 
|  |      6lslvxy OP @TtTtTtT 我测试了下是只有序号有用的,接口文档给的太粗糙了,太难理解  这个怎么理解啊 | 
|      7TtTtTtT      2021-09-15 16:35:25 +08:00 @lslvxy 就是 byte[]再解析成下面那个对象。 因为 protobuf 对于多态的支持有点弱,一般都是先转换成 ByteString,再塞到一个 bytes 的 field 里。 | 
|  |      8lslvxy OP @TtTtTtT  那我 httpclient 调用 要先把下面的对象 build 之后 toByteArray()再塞到上面的 bytes 里面再 toByteArray()发出去么 | 
|      9TtTtTtT      2021-09-15 16:42:18 +08:00 @lslvxy 唔,是的。 不过你如果是调用方的话,不考虑他们的那种多态设计,字段直接引用对象也是可以的。在 Protobuf 内部,bytes 和 message type 的类型是一样的。 | 
|  |      10lslvxy OP @TtTtTtT 我这边用 httpclient 测试了发送二进制数据过去了,拿到了一个 response  二进制数组 [120, -25, 122, 110, 80, 120, -41, -120, 113, 113, 113, 113, 113, 113, 113, 127, 110, 109, 14, 27, 13, 0, 1, 2, 13, 27, 80, 7, 13, 80, 2, 11, 4, 4, 95, 95, 95] 解析出来 是� ��������� response is null!!! 前面一串是乱码,后面一部分是正常的 业务 response 二级结构: 说明 类型 序号 返回码 INT 1 返回内容 STRING 2 | 
|      11TtTtTtT      2021-09-16 10:28:17 +08:00 @lslvxy 不知道返回的是啥,解析了一下前面几个 Byte,到 110 就卡住了。 int 1 对应的是 8,string 2 对应的是 18 。 | 
|  |      13sikong31      2021-09-16 17:24:13 +08:00 如果你是想知道其他序号什么类型 可以用这个 https://github.com/mildsunrise/protobuf-inspector 数据够多一般都能搞出来 |