I think something is wrong with that serialized proto. There may be a valid proto in there somewhere, but at least the first few bytes seem to be wrong. I starts with 0x32 which would indicate field number 6 and wire type 2 (see encoding details here <https://developers.google.com/protocol-buffers/docs/encoding>), but your schema does not have a field number 6 anywhere. I would guess that some extra bytes are getting prepended to the serialized proto.
On Mon, Sep 27, 2021 at 12:13 AM Irad K <[email protected]> wrote: > Hi, I wonder if anybody can help me out with a Protobuf parsing issue I'm > currently facing. So I've implemented the following protobuf based protocol > message singleConfig { > string configName = 1; > string configValue = 2; > } > > message currentConfig { > repeated singleConfig conf = 1; > } > > message HttpRequest { > string osVersion = 1; > string productVersion = 2; > currentConfig config = 3; > } > > I send this object HttpRequest, on the body of post http request from the > c++ based client using the following serialization: > > protocol::ProtocolRequest &requestBody; > > // fill up the protobuf object > > req.body() = requestBody.SerializeAsString(); > > On my http python server, I expect to get http post requests from body > that conform this protocol. > > So upon incoming http post request, the body contents arrived and seems > valid (I can identify the fields' values from the text) > b'2@\n\x0611.5.1\x12\x061.0(1)\x1a.\n,\n\x08file.json\x12 > ecf1c21c77a419f8f7dbfb714a806166' > > Here's the code that parse the http request. notice > that ParseFromString accept 'bytes' formatted input. The parsing finish > without any exception so I assume it went alright... > message = HttpRequest() > message.ParseFromString(data) > > However, an attempt to access each one of the fields in the protobuf > structure reveals empty value : > message.osVersion > '' > message.productVersion > > '' > > ... > > Any idea what's wrong with the parsing, is it the fact that I'm using > python3? bad formatting ? should I pass the body not as a string but from > different encoding ? > Thanks ! > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/protobuf/760e7e07-15c5-42db-84ef-a20564f5481bn%40googlegroups.com > <https://groups.google.com/d/msgid/protobuf/760e7e07-15c5-42db-84ef-a20564f5481bn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/CADqAXr7Fn%2BS69ydoxLgiBwxgTy1OFcgAMn-F6rGy-5Zd%3D7q7yw%40mail.gmail.com.
