我使用以下内容来调用WebAPI
using (HttpClient client = HttpClientFactory.Create(new AuthorisationHandler()))
{
client.BaseAddress = new Uri(BaseURI);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));
var httpResponseMessage = await client.PostAsXmlAsync<AvailRequest>("Avail/Search/", req);
httpResponseMessage.EnsureSuccessStatusCode();
var availResp = await httpResponseMessage.Content.ReadAsAsync<AvailResponse>();
return availResp;
}
AvailResponse类看起来像这样
[DataContract(Namespace = "")]
public class AvailResponse
{
[DataMember]
public ICollection<NotWorkingType> NotWorking { get; set; }
[DataMember]
public ICollection<WorkingType> Working { get; set; }
}
由于某些原因 - 我显然不知道 - 当响应进入并被解析到AvailResponse
对象时,只有WorkingType
被反序列化而另一个NotWorking
不是。我用过fiddler并且可以确认响应在i中有这两个。
我尝试使用XmlMediaTypeFormatter
代替默认值,甚至将UseXmlSerialiser
设置为true,但无济于事。
有人可能会对正在发生的事情有所了解
我原本以为如果它不能正确地反序列化,它会丢失和错误,而不是简单地反序列化响应的一部分。
任何帮助,非常感谢
感谢
NAT