2013-07-22 9 views
0

我得到InvalidProtocolBufferException而在服务器端解析为以下消息InvalidProtocolBufferException奇怪的行为

属性{

名称: “attR1位”

值{ 类型:BOOL

nrOfElements: 1 

inner_value { 

    theBoolean: false 
} 

}

}

,当我代替假发真,其将没有错误。

属性{

名称: “attR1位”

值{

type: BOOL 

nrOfElements: 1 

inner_value { 

    theBoolean: true 
} 

}

}

可能是什么疗法的错误?下面的错误是:

com.google.protobuf.InvalidProtocolBufferException:在解析协议消息,输入意外的场的中间结束。这可能意味着要么输入被截断,要么嵌入的消息误报自己的长度。

误差在其中i在服务器侧称为parseFrom()抛出。请帮帮我。

+0

请出示你使用来获取和分析输入的代码。我们目前没有足够的背景。 –

+0

也可以使用哪种版本的协议huffers和堆栈跟踪 –

+0

感谢您的回复。 这里是我使用的代码..和我使用协议buf 2.4.1。 我得到错误parseFrom()。 DataInputStream inStream = new DataInputStream(client_socket.getInputStream()); int size = inStream.readInt(); byte [] buff = new byte [size]; inStream.read(buff,0,size); SocketRpcProtos.Request rpcRequest = SocketRpcProtos.Request.parseFrom(rawRpcBuffer); – Srikanth

回答

0

其解决。这里是修复。在客户端: 我首先发送数据的大小,然后发送该大小的数据。大小的值将在服务器端使用。 结尾字符串数组中有字节'0'(对于我认为错误的)。所以我发送的大小小于数据大小。所以它给错误。

+0

我面对的是完全相同的InvalidProtocolBufferException&消息,但解析通过Http接收的客户端的协议对象。任何建议!?我觉得你的回答很模糊,仅限于你自己的情况! – vanguard69