私はSpring.Restフレームワークを使用しています。バイトとして受信されたプロトを逆シリアル化する方法[]
私たちが402を受け取った場合、本体にはさまざまなエラー情報が含まれるプロトが含まれます。
402で発生したExceptionは、Spring.Rest.Client.HttpClientErrorExceptionのインスタンスです。 例外内の応答は、Spring.HttpResponseMessageのインスタンスです。 応答内のボディの型はbyte []です。 これは、Deserialiserがストリームを期待している間に私はバイト[]を持っていることを意味します。私は次のことを行っている体に含まれるプロトをdeserialiseするために
:
MemoryStream mStream = new MemoryStream();
mStream.Write(exception.Response.Body,0,exception.Response.Body.Length);
var proto = Serializer.Deserialize<XXXRestProtoException>(mStream);
私はプロトが戻っ検査時に、そのプロパティはすべてnullです。 私のアプローチは正しいのですか、それともDeserializeメソッドにストリームを提示する前にもっとやる必要がありますか?
クライアントとサーバーで使用されるプロト定義が同期しており、本体がサーバー上に正しく構成されていることが確認されました。
このコードによって生成されるストリームは、指定されたbyte []と同じ長さと内容を持ち、コンテンツ長のヘッダーと一致します。
ありがとうMarc、それは私の問題でした。 – Aidan
正確には、新しいMemoryStream(exception.Response.Body)を使用する必要がありました。 位置のリセットが機能しませんでした。 – Aidan
@Aidan odd - それは持っているはずです –