我有一个基于Web的系统,用户可以通过输入URL和必要的参数值从Web服务获取数据。
我的问题是,不知怎的,我需要找出soap体中所需参数的结构,这不一定只是一个或两个字符串,但可能是一个完整的对象树。
传输不是问题,因为它只是简单的XML。
我该怎么做?我是否需要阅读整个WSDL架构并尝试解决这个问题,还是有一些更简单的方法?我知道.NET可以为它生成代码,但是我可以很容易地找出生成哪些类而不实际生成它并使用反射来找出它的作用吗?
有没有人有想法?
答案 0 :(得分:4)
您可以使用ServiceDescription类,它为您提供表示您的wsdl文件的对象模型。
如果你想尝试一个有用的包装器,那么请注意这个post。
答案 1 :(得分:0)
我从来没有这样做过,但我相信.net允许你动态生成代理。然后,您应该能够反映生成的类。除了简单的界面之外,我无法看到这种方法。
答案 2 :(得分:0)
我看到3个选项:
a)联系Web服务的发布者并索取文档和代码示例。
b)使用Visual Studio生成代理类。然后研究生成的代码,找出如何在没有生成代码的情况下自己完成。您将需要了解XMLSerializer类的工作原理,因为这是用于将生成的类型转换为XML的类。
c)阅读WSDL描述以了解预期的参数及其格式。
希望这有帮助,
狡猾
答案 3 :(得分:0)
尝试使用ChannelFactory。这将允许您在运行时动态调用Web服务并创建代理客户端。我看到了你关于加载和卸载程序集的评论。使用带有反射的客户端代理,并在完成时将其丢弃。
答案 4 :(得分:0)
对于一般情况,这个问题很难解决。如果服务的“参数”之一是XML文档怎么办?如果它是一个复杂的类型怎么办?您将如何生成允许输入此类内容的UI?
您也可以查看soapUI。
顺便说一句,创建一个新的AppDomain来加载程序集并不困难。事实上,这很容易。