代码中根据wsdl文件动态生成代理对象
您好,可以从代码中的 wsdl 文件动态生成代理对象吗?
我知道我可以使用工具 wsdl.exe,但我希望有一个选项基于 URL 下载 wsdl 并在代码中生成代理对象。
客户端是 C# 语言,Web 服务是 Java 语言。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Wsdl.exe 使用 System.Xml 和 System.Web.Services 中的框架类来发挥其魔力。然而,这些类很晦涩,很难使用 Google 搜索找到,除非您特别知道类名本身。
一个好主意是查看 Mono 的 wsdl.exe 源代码: http://c-cpp.r3dcode.com/files/mono/2/10.2/mcs/tools/wsdl/MonoWSDL2.cs
这将帮助您生成存根代码。
编辑:John 认为 asmx 是遗留的,而 svcutil 是正确的选择。如果你问我,SOAP 本身就是遗产,而 REST 才是出路。但由于问题是关于 SOAP 的,并且 svcutil 被认为是一种更好的技术,因此 svcutil 的工作原理如下:
http://c-cpp.r3dcode.com/files/mono/2/10.2/mcs/tools/svcutil/Driver.cs。
Wsdl.exe uses the framework classes from System.Xml and System.Web.Services to does its magic. However, those classes are obscure and quite difficult to find using a Google search, unless you specifically know the class names themselves.
A good idea is to look at Mono's wsdl.exe source code: http://c-cpp.r3dcode.com/files/mono/2/10.2/mcs/tools/wsdl/MonoWSDL2.cs
This will get you as far as generating the stub code.
Edit: John thinks that asmx is legacy, and svcutil is the way to go. If you ask me, SOAP itself is legacy and REST is the way to go. But since the question is about SOAP and svcutil is supposedly a better technology, here's how svcutil works:
http://c-cpp.r3dcode.com/files/mono/2/10.2/mcs/tools/svcutil/Driver.cs.