MVC 4 用の新しい Web API の使用に切り替えたところですが、Web サービスからの応答を逆シリアル化するのが非常に困難です。
これは私のサーバーコードです:
IEnumerable<Fish> myList = GetFish();
return Request.CreateResponse(HttpStatusCode.OK, myList,"application/xml");
これは次のようにシリアル化されます。
<ArrayOfFish xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MySolution.NameSpace.Resources\" />
結果が返されないためです。
を使用してこれを解析しようとするとXmlMediaTypeFormatter
、取得したものを期待していないというエラーが表示されます。
それを逆シリアル化するための私のコードは、Web API を使い始める前から変更されておらず、単純です:
return content.ReadAsAsync<T>(formatters).Result;
formatters はフォーマッタの 1List
つであり、XmlMediaTypeFormatter
T は、Fish
タイプを省略する"application/xml"
と、JSon で送信されているように見えますが (結果は [])、クライアントは xml を予期しており、明示的にタイプをtext/json
.
オブジェクトを逆シリアル化するのはかなり簡単なはずです。以前に行っていたのとまったく同じです。汎用バージョンはサポートされなくなったため、サーバーを直接使用する代わりに使用CreateResponse
するようにわずかに変更しました。イライラする結果をオブジェクトにデコードする誰かのクライアント/サーバーの例をオンラインで見つけることができません。HttpResponseMessage
HttpResponseMessage<T>
何か案は?