无效的Protobuf字节序列

时间:2019-07-22 20:34:04

标签: grpc grpc-java

我有一个ByteArrayOutputStream,可用来编写如下内容:   这些是

(0,0,0,0,10,84,101,115,116,58,32,109,97,105,101)

转换为以下字符:

 [B@61dc03ec

这是我的写法:

    baos.write(zeroByte);
    baos.write(lengthBytes);
    baos.write(messageBytes);
    byte[] c = baos.toByteArray();

这是我在写的东西:

 int messageLength=EchoRequest.newBuilder()
            .setMessage("Test" + ": " +    Thread.currentThread().getName())
            .build().getMessageBytes().toByteArray().length;

        byte[] lengthBytes =   ByteBuffer.allocate(4).putInt(messageLength).array();

       byte[] zeroByte = {0};

      byte[] messageBytes = EchoRequest.newBuilder()
            .setMessage("Test" + ": " +  Thread.currentThread().getName())
            .build().getMessageBytes().toByteArray();


SEVERE: Exception while executing runnable    io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener   .$1MessagesAvailable@48397542
io.grpc.StatusRuntimeException: INTERNAL: Invalid protobuf byte   sequence
at io.grpc.Status.asRuntimeException(Status.java:524)
at    io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteU.tils.java:218)
at   io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteU. tils.java:118)
at   io.grpc.MethodDescriptor.parseRequest(MethodDescriptor.java:301)
at   io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:297)
at   io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:738)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.google.protobuf.InvalidProtocolBufferException:     Protocol message end-group tag did not match expected tag.
at   com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:106)
at com.google.protobuf.CodedInputStream$ArrayDecoder.checkLastTagWas(CodedInputStream.java:630)
at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parseFrom(ProtoLiteUtils.java:225)
at  io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:215)
... 9 more

0 个答案:

没有答案