如何将 Protocol Buffers 消息转换为 byte[]

3

这是我的代码,我对协议缓冲还不太熟悉。我该如何将协议缓冲转换为byte[],以便我可以加密它?

for (ClientRequest req : check.getClientRequestGroup().getClientRequests()) {
            ClientRequestProtos.GetUnixDormantUsers.Builder guduBuilder =     ClientRequestProtos.GetUnixDormantUsers.newBuilder();
            guduBuilder.setCheckFiles(true);
            guduBuilder.setCheckProcesses(true);
            guduBuilder.setThreshold(30);
            guduBuilder.addExcludeUser("root");
            guduBuilder.addExcludeUser("bin");
            ClientRequestProtos.GetUnixDormantUsers guduMessage = guduBuilder.build();

            ClientRequestProtos.ClientRequest.Builder clientBuilder = ClientRequestProtos.ClientRequest.newBuilder();
            clientBuilder.setId(req.getId());
            clientBuilder.setSentAt(req.getSentAt().getTime());
            clientBuilder.setType(ClientRequestType.GET_UNIX_DORMANT_USERS);
            clientBuilder.setGetUnixDormantUsers(guduMessage);
            ClientRequestProtos.ClientRequest clientMessage = clientBuilder.build();



String ipAddress = mapHostIp.get(req.getHost());
                GenericUrl url = new GenericUrl("http://"+ ipAddress+":5736/request");
byte[] content; // convert protocol buffers to byte[]


            byte[] encrypted = Encrypt.encrypt(content);
            HttpRequest request = requestFactory.buildPostRequest(url, new ByteArrayContent(null, encrypted));
            request.execute();
        }
1个回答

10

只需在消息上调用toByteArray方法:

byte[] content = clientMessage.toByteArray();

有没有办法将bytearray转换为Protobuf? - unknown_11
@unknown_11:你需要更加精确地说明你想要做什么 - 但是与其在将近9年前的帖子上添加评论,我建议你提出一个新的、详细的问题。 - Jon Skeet
感谢@jon Skeet的回复,实际上我正在开发一个Kafka消费者,并且正在寻找一种从Kafka控制台生产者生成protobuf数据以测试我的应用程序的方法。 - unknown_11
@unknown_11:请不要在这里提供任何细节 - 相反,请提出一个新问题。 - Jon Skeet
实际上我没有提问的权限,所以我在评论区提出了问题。 - unknown_11
@unknown_11:我不会帮你规避封禁。你应该像其他因为提问质量差而被封禁的人一样,改进你的旧问题。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接