当前位置: 首页 > 面试题库 >

协议消息端组标签与预期标签不匹配

慕嘉运
2023-03-14
问题内容

我一直在获取以下堆栈跟踪信息,并且不确定这意味着什么。

Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
    at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:73)
    at com.google.protobuf.CodedInputStream.checkLastTagWas(CodedInputStream.java:124)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:189)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:732)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:238)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:178)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:724)
  • “协议消息端组标签与预期标签不匹配”是什么?意思?
  • 什么是“消息端组标签”?
  • 这是在某处记录的吗?

问题答案:

protobuf中的组被写为开始/结束数字对-有点像<foo>需要a
</foo>,但是格式不同。本质上,它抱怨它找到了一个</bar>替代项(只是:xml只是一个隐喻)。详细信息在编码规范中,但总的来说是以下之一:

  • 数据本身是损坏的(由于错误的编码器造成的损坏),或
  • 读取时数据变得损坏,或者
  • 数据很好,您给出了错误的解码器

如果我不得不猜测的话,数据在传输过程中已经被破坏了,因为这是如此的普遍。



 类似资料:
  • A well-known tag balancing: searches for tag or tag's content bounds from current caret position and selects it. It will expand (outward balancing) or shrink (inward balancing) selection when called m

  • 我了解Prorobuf/Steft需要独特的数字字段标记来提供版本兼容性。他们通过以下方式序列化消息(某种)来提供版本兼容性: <代码> 反序列化时,他们拾取标签值,查找消息模式,并知道将值填充到哪个字段中。这样,只要我们添加具有不同标签值的新字段,消息就会兼容。 但我认为这不是一个很好的设计: > 标签值必须在消息中编码。这有一些开销。 例如当客户端多次调用远程服务器上的RPC方法时,每个请求/

  • 如需在 Markdown 中以标签组的方式显示内容,可以通过 MDX 来实现。Docusaurus 自带了 <Tabs> 组件,开箱即用。 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; <Tabs defaultValue="apple" values={[ {label: 'Ap

  • 标签可以与断点一起使用并继续更精确地控制流量。 例子 (Example) outerloop: // This is the label name for (var i = 0; i < 5; i++) { console.log("Outerloop: " + i); innerloop: for (var j = 0; j<5; j++) {

  • 我想使用弹出信息气球向我的GE地图添加标签,其中包含与整个地图相关的信息,而无需将该信息绑定到地图上的任何特定点。我可以创建一个带有描述的定位标记,但将标签钉在任意地理点。 我更喜欢将标签钉在屏幕上的某个点上,这样当用户缩放或平移时,标签会留在屏幕上,但不会碍事(例如,右下角)。我最接近的方法是创建一个placemark并将其可见性设置为0或删除其坐标。它将placemark名称作为Places面

  • 请帮忙。我有一个 SP,以及一个用于远程 IDP 的公钥。我上传了 spring sam 的示例,并对其进行了更改,公钥被添加到带有别名的 jks 文件中(使用键工具,命令列表显示 cer 已导入),并且它指向带有签名键的 idp 扩展元数据。但最终验证失败了。 org.opensaml.ws.security.安全策略异常:协议消息签名验证失败