Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 如何反序列化作为字节接收的proto[]_Serialization_Byte_Protobuf Net - Fatal编程技术网

Serialization 如何反序列化作为字节接收的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 =

我正在使用Spring.Rest框架

如果我们收到402,主体将包含一个proto,该proto将包含各种错误信息

402上引发的异常是Spring.Rest.Client.HttpClientErrorException的实例。 异常中的响应是Spring.HttpResponseMessage的一个实例。 响应中的主体类型为byte[]。 这意味着当反序列化程序需要一个流时,我有一个字节[]

为了反序列化正文中包含的proto,我执行了以下操作:

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;重置位置无效。