【发布时间】:2015-11-23 05:01:02
【问题描述】:
我在将 HttpResponseMessage 反序列化为对象时遇到了一些问题。 问题是当对象应该反序列化所有字段为空时,不会抛出异常。
HttpContent content = new StringContent(xml);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/xml");
HttpResponseMessage response = await client.PostAsync("URL", content).ConfigureAwait(false);
// Parse response
if (response.IsSuccessStatusCode)
{
XmlSerializer serializer = new XmlSerializer(typeof(ResponseObject));
Stream responseStream = await response.Content.ReadAsStreamAsync();
ResponseObject responseObject = serializer.Deserialize(responseStream) as ResponseObject;
//Possible example of wrong data
Console.WriteLine(responseObject.Message);
}
[XmlRoot("response")]
public class ResponseObject
{
[XmlElement("session")]
public string Session { get; set; }
[XmlElement("status")]
public string Status { get; set; }
[XmlElement("message")]
public string Message { get; set; }
}
字符串形式的响应消息
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<response>
<val n=\"session\">SESSION ID</val>
<val n=\"status\">201</val>
<val n=\"message\">Created</val>
</response>"
我错过了什么吗?我对序列化/反序列化很陌生。 感谢指点。
【问题讨论】:
-
会话、状态和消息是标签
val的属性n的值。 -
ResponseObject 是否不需要一些 val 元素集合来匹配 XML?
-
我多么愚蠢……这就是我试图重用旧项目中的代码的结果。我会在星期一回来工作的时候尝试一下。
-
问题:我还没有时间测试任何东西,但我有一个问题。我想我应该使用带有 XmlElement("val") 的 List
。但是当它被序列化时,我应该如何存储每个 xml 行的属性。我希望能够在列表中找到“会话”。有什么提示吗?
标签: c# asp.net .net serialization httpresponse