OP询问如何将xml(来自fiddler)反序列化为对象。
使用fiddler,我可以看到我的web服务调用确实得到了带有正确数据的响应。
问题是,我的响应对象为null,即web引用进行调用并获取数据,但实际的反序列化过程失败了。
我在谷歌上搜索了一下,可能是wsdl由于某种原因没有映射到返回的响应。
如果我不能修改wsdl,我有什么选择?
更新
I am making the call like this:
var serviceTest = new SecretService.GetUserProfile();
SecretService.ASADataset response = serviceTest.GetUserProfile("123");
// response is null
当监视fiddler时,我可以看到请求和响应。响应包含了我需要的所有数据,但我猜格式与VS.NET生成的不匹配。
public object DeserializeObject(string xml, Type type)
{
var xs = new XmlSerializer(type);
var stringReader = new StringReader(xml);
var obj = xs.Deserialize(stringReader);
stringReader.Close();
return obj;
}
// Usage
var serializer = new Serializer();
var response = (Response)serializer.DeserializeObject(
responseXml, typeof(Response));
最糟糕的情况是,你可以手动发布到一个URL,然后得到这样的响应xml-
Uri uri = new Uri(PostUrl);
var responseXml = client.UploadString(uri, requestXml);