iOS 使用ProtocolBuffer 时报 Protocol message end-group tag did not match expected tag.
来源:互联网 发布:设备报修软件 编辑:程序博客网 时间:2024/06/14 11:14
Protocol message end-group tag did not match expected tag.
问题
iOS给服务端发送PB转换后的串行数据后报异常,详情如下:
com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:110)at com.google.protobuf.CodedInputStream$ArrayDecoder.checkLastTagWas(CodedInputStream.java:617)at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:165)at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:197)at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:209)at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:214)at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)at com.vs.majiang.proto.PersonOuterClass$Person.parseFrom(PersonOuterClass.java:1251)at com.vs.majiang.test.ServerDemo5.main(ServerDemo5.java:44)
疯狂搜索无果,回头再看后台发过来的异常日志,
Person.parseFrom(PersonOuterClass.java:1251)
这行打印忽然意识到一个问题,是不是客户端序列化方式和服务端不一致所致?果真如此,ios客户端参考网上博客,使用
delimitedData
方式序列化数据,同一条数据,传给服务器,打印数据居然不一样!于是客户端将序列化方式换成
.data
,服务端使用parseFrom
解析,OK,问题解决!问题又来了,为什么服务端返回数据给客户端,客户端却无法解析?
其实问题也是出在解析方式上,将原本`parseDelimitedFromCodedInputStream:extensionRegistry:error` 改为:`parseFromData:extensionRegistry:error`即可;
总结
使用PB时,注意客户端与服务端所采用序列化和反序列化方式,要保持一致!
阅读全文
0 0
- iOS 使用ProtocolBuffer 时报 Protocol message end-group tag did not match expected tag.
- Submitted credentials for token did not match the expected credentials.
- Submitted credentials for token[***]did not match the expected credentials
- IOS tag的使用
- Protobuf lua 错误:Protocol message tag had invalid wire type
- [IOS]Tag使用相关(UIButton)
- end tag for "select" which is not finished
- Spring message tag
- Word2010 Error:The name in the end tag of the element must match the element type in the start tag.
- RocketMQ特性、专业术语(Producer,Producer Group,Consumer Group,Topic,Message,Tag,Broker,Name Server)等
- Tag, Tag group and Tag mask in Cell BE
- tag
- TAG
- TAG
- tag
- Tag
- tag
- tag~~
- HDU 1760 A New Tetris Game
- 深入理解 ruby 中的 eval 与 binding
- 获取多个随机生成的不重复的6位数,不重复的6位数或8位数串
- loj6002网络流 24 题 最小路径覆盖 最大流
- 线程同步(多线程协同使用有限资源)
- iOS 使用ProtocolBuffer 时报 Protocol message end-group tag did not match expected tag.
- JDK+Tomcat搭建JSP运行环境--JSP基础
- 010-logback中过滤器filter
- Kafka日志存储系统和offset查找逻辑
- Vuejs computed get set 计算属性
- 自己动手从0到1写嵌入式操作系统
- QT开发(三十九)——GraphicsView框架
- Java内部类详解
- 添加Fragment的两种方式