调用web服务并在没有wsdl的情况下反序列化soap

时间:2011-09-08 05:06:55

标签: c# web-services soap wsdl

我有一个供应商似乎没有wsdl或不愿意或不知道如何提供它。他们有许多Web服务(从技术上讲,它们是返回soap消息的JSP),我需要使用大约10-15个来完成我的工作。

由于没有WSDL,我不能使用“添加Web引用”功能来生成代理类等。通过使用WebClient进行调用并将响应作为字符串返回,我已经解决了这个问题,但现在我需要将响应反序列化为客户端类。

我已经创建了c#类来匹配返回的xml,但是我不确定如何从SOAP反序列化,因为有很多xml噪声。我可以剥离SOAP信封标签,然后使用XML序列化器反序列化为List<SomeType>,但这看起来很脏。有更好的方式吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用SoapFormatter.Deserialize()来反序列化响应。如果是这样,这将是有帮助的。  http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.soap.soapformatter.deserialize(v=vs.71).aspx

答案 1 :(得分:1)

我发表了一篇文章,详细介绍了如何对复杂的xml进行反序列化。

这是链接:http://blog.impact-works.com/2011/06/30/how-to-serializedeserialize-complex-xml-in-asp-net-c/

希望有所帮助