I am having trouble de-serializing a protobuf. I am confident that it is
serialized properly, as serialization works in all other cases.
Here's a simplified proto file:
```proto3
syntax = "proto3";
message Request {
oneof request {
LoginRequest login = 1;
SyncRequest sync = 2;
PushRequest push = 3;
}
}
message LoginRequest {
string username = 1;
string password = 2;
}
message SyncRequest {
}
message PushRequest {
message Item {
int64 id = 1;
string value = 2;
string date = 3;
}
repeated Item items = 1;
}
```
I read and de-serialize the protobuf in the `doPost` method of an
`HttpServlet`:
```java
@Override
protected void doPost(final HttpServletRequest httpRequest, final
HttpServletResponse httpResponse) throws ServletException, IOException {
final BufferedReader reader = httpRequest.getReader();
final byte[] buffer = IOUtils.toByteArray(reader, StandardCharsets.UTF_8);
final Request request;
try {
// TODO: Read from input stream directly.
request = Request.parseFrom(buffer);
} catch(final Exception e) {
throw new ServletException("Failed to deserialize request body.", e);
}
// Never reaches this line.
// ...
}
```
I get the following error:
```
11:44:23.199 [qtp1165303897-24] WARN o.e.j.ee10.servlet.ServletChannel -
handleException /api com.google.protobuf.InvalidProtocolBufferException:
While parsing a protocol message, the input ended unexpectedly in the
middle of a field. This could mean either that the input has been
truncated or that an embedded message misreported its own length.
```
If I sent `Request.login` or `Request.sync`, it successfully de-serializes.
The error only occurs for `Request.push`.
--
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/e85e7551-1b04-4199-9bed-5e8ce0631747n%40googlegroups.com.