深夜写完的代码——快速实现.NET(.net framework/.net core+)动态访问webservice服务
访问webservice服务时,通常采用服务引用方式,源码然而此法较为繁琐,源码尤其在服务更新时,源码需要手动更新引用并重新发布,源码极为不便。源码pdu转换源码现今,源码已有多例展示了在.NET Framework环境中实现动态访问webservice服务,源码却鲜少见到适用于.NET Core及更高版本的源码案例。本篇文章旨在提供一个通用解决方案,源码支持.NET Framework、源码.NET Core或以上环境的源码动态访问webservice服务接口,以供参考。源码
首先,源码情感测试 源码创建一个webservice服务作为测试平台。源码该服务提供三种接口:无参数接口、字符串参数接口、包含多个实体类参数(实体类包含嵌套和集合)及返回带有嵌套和集合的返回数据。此设计基本涵盖了webservice服务的主要场景。
测试实体类已备好,用于验证服务接口。
服务已启动并就绪。
接下来,开发请求端程序,支持.NET Framework 4.6.1+、.NET Core+及.NET 5+所有版本。可以通过NuGet引入Wesky.Net.OpenTools包,签到asp源码确保使用最新版本以获取完善功能。本文以.NET 8控制台为例,使用者可根据需求自行调整引用。
程序中实例化WebserviceHelper对象,对于使用IOC容器的项目(如asp.net core),可进行依赖注入的注册;对于无需IOC容器的项目,直接new对象即可。获取asmx的url地址,并在结尾添加?wsdl。
设定要访问的服务名称,例如“HelloWorld”,然后调用接口。无参数情况下,ubb源码下载参数设为null。
运行程序调用接口,获取xml文档返回值。
调用返回类型为OpenToolResult,该类型包含基础类型值解析方法。解析后得到的最终返回消息为“Hello World”。
基础类型值解析方法定义了获取返回值、节点名称(一般为方法名称+“Result”)及命名空间的过程。命名空间在调用时会被存储在OpenWebserviceInfo的OpenWebservice集合中,通过url地址和接口方法名匹配到对应的命名空间。
OpenWebserviceDocCache类型定义了存储和管理命名空间的结构。
接着,尝试传入一个基础类型参数,多框架源码访问“Hola”方法,传入“Wesky”,成功获取返回值“Wesky World”。
随后,模拟多个实体类参数的调用,服务应返回一个包含其他实体类的消息。
回顾TestService服务接口实现,确认动态访问是成功的。
访问webservice方法定义如下:支持0个或多个参数,参数个数需与解析wsdl地址的方法服务匹配。Result.IsSuccess为true表示请求成功,解析错误或请求失败时返回false,并附带具体错误描述。
返回值为实体类时,需要调用ExtractCustomerValueFromXml方法进行解析。以ResultInfo类型为例,此方法可处理返回实体类数据。
关键代码片段已列出,若本教程对你有所助益,请分享给需要的朋友,并关注公众号:Dotnet Dancer。如有需要,公众号后台回复“动态接口”获取演示代码和webservice测试源码。
OpenTools系列文章链接如下,新版本与旧版本完全兼容,无需更新任何代码即可使用:
版本1.0.:如何一行C#代码实现解析类型的Summary注释(适用于数据字典快速生成)
版本1.0.:C#/.NET一行代码将实体类类型转换为Json数据字符串
版本1.0.8:上位机与工控必备!用.NET快速搞定Modbus通信的方法
版本1.0.7:揭秘!.Net如何在5分钟内快速实现物联网扫码器通用扫码功能?
版本1.0.6:.NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)
版本1.0.5:C#使用P/Invoke实现注册表的增删改查功能
版本1.0.3:C#实现转Base字符串,以及Base字符串在Markdown文件内的复原演示
版本1.0.2:C#实现Ping远程主机功能(支持IP和域名)
版本1.0.1:开始开源项目OpenTools的创作(第一个功能:AES加密解密)
备注此包版本完全开源,无第三方依赖,适用于.net framework 4.6+、任意其他跨平台.net版本环境。
第九章 创建 Web Services - 查看 WSDL
第九章内容概要:
在使用%SOAP.WebService定义 Web 服务时,系统会生成并发布描述该服务的 WSDL 文档。每当修改并重新编译 Web 服务时,系统会自动更新此 WSDL。此文档遵循通用接口标准,确保Web服务与客户端之间的互操作性,具体细节和差异可能因服务版本而异。
为方便访问,系统将生成的 WSDL 文档提供在特定 URL 上。但若 Web 应用程序需要密码身份验证或 SSL 连接,则直接通过 URL 访问可能不可行。此时,建议下载 WSDL 文件,并根据需要使用该文件。
值得注意的是,生成的 WSDL 文档不包含运行时添加的 SOAP 标头信息。若要包括这些信息,可先下载 WSDL 文件,然后根据需要进行修改,再使用修改后的文件。
查看 WSDL 时,可以通过浏览器访问特定 URL。例如,URL 形式为 http://your.instance/csp/app/web_serv.wsdl,其中 "your.instance" 为实例名称,"csp/app" 为 Web 应用程序名称,"web_serv" 为 Web 服务类名。注意类名中的任何百分号字符 (%) 都会替换为下划线字符 (_)。
若浏览器无法正确显示架构,可以查看页面源代码以查看实际的架构。例如,在 Firefox 中,可以通过右键点击页面,然后选择“查看源代码”来实现。
可以将 WSDL 生成为静态文档,方法是在类中调用 %SOAP.WebService 提供的方法 FileWSDL()。此方法接受两个参数:文件名称和是否包含任何标记为 Internal 的 Web 方法。
若 Web 服务包含标记为“内部”的 Web 方法,默认情况下这些方法会包含在 WSDL 中。若要阻止这些方法出现在 WSDL 中,可以执行以下操作之一。
2024-11-20 04:33
2024-11-20 03:29
2024-11-20 03:26
2024-11-20 03:01
2024-11-20 02:27