欢迎访问本站,祝大家玩得愉快。

Protobuf序列化转String类型的问题

Android kany.wang 3782℃ 0评论

背景

最近在使用Protobuf将转换的数据进行String传输到客户端,不管怎么样处理客户端都爆出如下错误:

com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either than the input has been truncated or that an embedded message misreported its own length.
    at com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:70)
    at com.google.protobuf.CodedInputStream.readRawBytes(CodedInputStream.java:789)
    at com.google.protobuf.CodedInputStream.readBytes(CodedInputStream.java:329)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:484)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:461)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:579)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFrom(UnknownFieldSet.java:280)
    at com.google.protobuf.CodedInputStream.readGroup(CodedInputStream.java:240)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:488)
    at com.google.protobuf.GeneratedMessage.parseUnknownField(GeneratedMessage.java:193)

我这个人比较懒,然后上网搜索一番发现,很多人都遇到了同样的问题。
网上也给出了例子,我这边使用的是Golang通过腾讯的云通信和App打交道,所以记录一番。
解决办法到下文参考里面的连接中去看吧。O(∩_∩)O哈哈~

总结:如果你的数据不是通过字节流的形势去传输的,是通过byte[]转string去传输。建议还是使用Base64的方式去处理。

参考资料

联系方式

  • 小伙伴群:J2EE技术交流

打赏

转载请注明:懒人屋 » Protobuf序列化转String类型的问题

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址