Yes, you where right about the first 2 bytes, it was indeed what's corrupted my Protobuf structure. Thanks !
ipdb> message.ParseFromString(data[2:]) 64 ipdb> message.osVersion '11.5.1' On Tuesday, September 28, 2021 at 9:08:49 PM UTC+3 [email protected] wrote: > 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/f2d1be2c-61ea-4b0f-ba50-d399adc8286fn%40googlegroups.com.
