2013-07-22 33 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