gpt4 book ai didi

java - 为什么从字节数组而非 InputStream 创建 Message.Builder 时会收到 InvalidProtocolBufferException?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:13 26 4
gpt4 key购买 nike

我正在处理 Servlet 并尝试记录请求。导致错误的代码的关键部分如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
StringWriter writer = new StringWriter();
IOUtils.copy(request.getInputStream(), writer);
Message.Builder builder = something of type com.google.protobuf.GeneratedMessage.Builder;
builder.mergeFrom(writer.toString().getBytes());
}

上面最后一行代码导致以下异常:

com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.

但是,当代码切换为:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
Message.Builder builder = something of type com.google.protobuf.GeneratedMessage.Builder;
builder.mergeFrom(request.getInputStream());
}

没有错误,一切正常。可能是什么问题?我似乎需要类似于第一个代码片段的东西,因为我需要第二次使用输入流(一次将其写入文件,一次处理实际请求)。

最佳答案

这个怎么样?

InputStream inputStream = request.getInputStream();

byte[] data = IOUtils.toByteArray(inputStream);
Message.Builder builder = something of type com.google.protobuf.GeneratedMessage.Builder;
builder.mergeFrom(data);

// then use inputStream for something else

关于java - 为什么从字节数组而非 InputStream 创建 Message.Builder 时会收到 InvalidProtocolBufferException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com