【问题标题】:HttpClient response ReadAsAsync() doesn't fully deserialize objectHttpClient 响应 ReadAsAsync() 没有完全反序列化对象
【发布时间】:2013-02-08 16:13:57
【问题描述】:

我正在尝试通过 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 对象,但所有字段都是空的。

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

我的问题是为什么我的原始(PostAsJsonAsync)不返回一个完全填充的 apmsgMessage。我对 ReadAsAsync 做错了吗?

【问题讨论】:

  • 您能分享返回的 json 的有线格式以及“apmsgMessage”类型吗?

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


【解决方案1】:

我刚刚遇到了同样的问题,就我而言,我通过从类中删除 [Serializable] 属性来解决它。

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

【讨论】:

  • 谢谢,拯救了我的一天!问题作者应将此答案标记为解决方案。
  • 嘎啊啊啊啊啊啊啊啊。这似乎与它应该是完全相反的。 3小时就这个。感谢您的回答。 #whatInTheWorld
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
相关资源
最近更新 更多