4

Web API クライアント ライブラリを使用して Web サービスを利用しようとしています。私の問題は、送信関数が POST メソッドを使用するときに、ReadAsAsync が返されたオブジェクトを完全に逆シリアル化したくないように見えることです。

応答を文字列として取得し、手動で逆シリアル化すると機能します。(すべてのフィールドが入力された apmsgMessage を取得します)

HttpClient client = GetClient();
var response = client.PostAsJsonAsync("api/robot/Preview", ad).Result;
var msg = response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<apmsgMessage>(msg.Result);

apmsgMessage オブジェクトを返す以下のコードを最初に試しましたが、すべてのフィールドが null です。

HttpClient client = GetClient();
var response = client.PostAsJsonAsync("api/robot/Preview", ad).Result;
var msg = response.Content.ReadAsAsync<apmsgMessage>().Result;
return msg;

私の質問は、元の (PostAsJsonAsync) が完全に入力された apmsgMessage を返さない理由です。ReadAsAsync に何か問題がありますか?

4

1 に答える 1

5

私はちょうど同じ問題を抱えていました。私の場合[Serializable]、クラスから属性を削除することで解決しました。

この属性が逆シリアル化プロセスと競合する理由はわかりませんが、それを取り除くとすぐに、ReadAsAsyncメソッドは期待どおりに機能しました。

于 2013-09-25T16:58:52.623 に答える