如果wsdl不正确,并且我生成的web引用无法进行反序列化,那么我有什么选择

本文关键字:反序列化 选择 什么 web 不正确 wsdl 如果 引用 | 更新日期: 2023-09-27 18:20:37

使用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生成的不匹配。

如果wsdl不正确,并且我生成的web引用无法进行反序列化,那么我有什么选择

OP询问如何将xml(来自fiddler)反序列化为对象。
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);