HttpClient响应ReadAsAsync()没有完全反序列化对象

时间:2013-02-22 22:41:39

标签: c#-4.0 asp.net-web-api

我正在尝试使用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上做错了吗?

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,在我的情况下,我通过从类中删除[Serializable]属性来解决它。

我不知道为什么这个属性与反序列化过程冲突,但是一旦我把它拿出来,ReadAsAsync方法就按预期工作了。