Serialization 如何反序列化作为字节接收的proto[]
我正在使用Spring.Rest框架 如果我们收到402,主体将包含一个proto,该proto将包含各种错误信息 402上引发的异常是Spring.Rest.Client.HttpClientErrorException的实例。 异常中的响应是Spring.HttpResponseMessage的一个实例。 响应中的主体类型为byte[]。 这意味着当反序列化程序需要一个流时,我有一个字节[] 为了反序列化正文中包含的proto,我执行了以下操作:Serialization 如何反序列化作为字节接收的proto[],serialization,byte,protobuf-net,Serialization,Byte,Protobuf Net,我正在使用Spring.Rest框架 如果我们收到402,主体将包含一个proto,该proto将包含各种错误信息 402上引发的异常是Spring.Rest.Client.HttpClientErrorException的实例。 异常中的响应是Spring.HttpResponseMessage的一个实例。 响应中的主体类型为byte[]。 这意味着当反序列化程序需要一个流时,我有一个字节[] 为了反序列化正文中包含的proto,我执行了以下操作: MemoryStream mStream =
MemoryStream mStream = new MemoryStream();
mStream.Write(exception.Response.Body,0,exception.Response.Body.Length);
var proto = Serializer.Deserialize<XXXRestProtoException>(mStream);
当我检查返回的proto时,它的属性都是null。
我的方法正确吗,还是在将流呈现给反序列化方法之前需要做更多的工作
我们已经确认客户端和服务器上使用的proto定义是同步的,并且服务器上的主体结构良好
此代码生成的流具有与给定字节[]相同的长度和内容,而字节[]又与内容长度头匹配。如果写入流,则该位置保留在流的末尾;2个简单选项:
倒流;在写入和反序列化之间,放置:
从blob初始化流:
MemoryStream mStream = new MemoryStream(exception.Response.Body);
我通常使用后者。如果写入流,则该位置保留在流的末尾;2个简单选项:
倒流;在写入和反序列化之间,放置:
从blob初始化流:
MemoryStream mStream = new MemoryStream(exception.Response.Body);
我通常使用后者。谢谢Marc,这是我的问题。准确地说,我们需要使用新的MemoryStreamexception.Response.Body;重置位置无效。谢谢Marc,这是我的问题。准确地说,我们需要使用新的MemoryStreamexception.Response.Body;重置位置无效。