C# .Net6 指定WSDL, 调用该接口服务。
- IDE: Microsoft Visual Studio Community 2022 (64 位)
- 平台:.Net6
- 协议:Soap协议 Xml格式
功能
- 需要开发一个前置机程序, 用于和硬件程序交互,
- 已知条件是:嵌入式同事提供另一个约定好的*.wsdl文件作为双方通信的Webservice接口协议,对方是服务端,前置机是客户端
实现方式1
- 使用BasicHttpBinding
通过WSDL文件,生成WEB服务
注意,这里,我的VS2022的提示步骤和网上查到的操作步骤略有不同,下面的步骤是我的VS2022的操作步骤:
-
首先,在 VS2022 中打开 .NET 6 项目或者新建一个 .NET 6 项目。
-
在“解决方案资源管理器”中,右键单击项目名称,然后选择“添加”->“服务引用”。
-
在“添加服务引用”窗口中,有三个选项,
- OpenAPI,
- gRPC
- WCF Web Service
这里选择 WCF Web Service,进入窗口“添加新的WCF Web Service服务引用”
-
点击“浏览”按钮,然后从文件系统中选择你的 WSDL 文件。
-
选中 WSDL 文件后,服务引用的配置将在窗口下方显示出来。这里可以在下面的输入框,修改命名空间为你想要的名称,点击下一步,在新窗口中,可以指定数据类型选项,默认不需要改,点击“完成”。
-
此时,VS2022 会根据你的 WSDL 文件生成 Web 服务的代码,即:原Webservice服务的代理类。
-
还有一个生成Webservice服务代理类的方法:
- 用wsdl.exe工具的方式
- 指令是:wsdl /language:c# /n:Fu /out:d:/MyService.cs C:\Users\Administrator\Desktop\MyService.wsdl)
- “d:/MyService.cs”是输出目录
- “C:\Users\Administrator\Desktop\MyService.wsdl”是源wsdl文件的位置
- 具体用法,可以使用搜索引擎查询,这里不再赘述。
调用该WebService的方法
public static async Task TestCallWs() { mydemo.TestMyClient serv = null; try { var binding = new BasicHttpBinding(); var endpoint = new EndpointAddress(UrlString); // url地址 serv = new mydemo.TestMyClient(binding, endpoint); var result = await serv.invokeAsync(ParamsString); // xml格式的字符串参数 Console.WriteLine("返回接口数据:\n " + result); } catch(HttpRequestException e) { Console.WriteLine(e.Message); } finally { if (serv != null) { serv.Close(); } } }
实现方式2
使用HttpClient
简单做一下封装
- 定义:WsClient
public class WsClient { // 接口地址 private string mUrl = string.Empty; // 请求参数 private string mParam = string.Empty; namespace命名空间 //private string ns = "http://XXX:xx/xx/xx"; // TODO填写上你需要的命名空间名称 请求方法名 //private string funName = string.Empty; public WsClient() { throw new NotImplementedException(); } public WsClient(string url) { this.mUrl = url; } public async Task
Request(string param) { if (string.IsNullOrEmpty(mUrl)) { return "接口地址为空!"; } if (!mUrl.Contains("http")) { return "非法接口地址!"; } if (string.IsNullOrEmpty(param)) { return "请求参数为空!"; } this.mParam = param; try { HttpClient httpClient = new(); // soap参数 string payload = @" " + mParam + @" 调用方式:
string result = await new WsClient(wsUrl).Request(xmlData);
wsUrl: 是你的Webservice接口地址;
xmlData: 是你拼装好协议里约定的xml格式的数据参数,示例如下:
result: 是请求接口,返回的数据,也是xml格式。
QueryUsers 21202012211211
完结
- 经过简单试验,感觉方式2的性能要略优于方式1的实现。我目前次采用的也是方式2。
猜你喜欢
- 22天前(杭州西湖区万怡酒店正式开业了吗)杭州西湖区万怡酒店正式开业
- 22天前(临沂 凯悦)临沂第一家凯悦嘉轩酒店开幕迎宾
- 22天前(七尚酒店百度百科)Lohkah七尚酒店首度开创充满新知的闽地研学旅程
- 22天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 22天前(澳涞坞是什么)从本土品牌到全球舞台:澳涞山庄获国际顶级产业资源加持
- 22天前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 22天前(夏日纵享 邂逅双面姑苏是哪一集)夏日纵享 邂逅双面姑苏
- 22天前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 22天前(新西兰登陆《我的世界》!全球首个目的地游戏模组震撼上线)新西兰登陆《我的世界》!全球首个目的地游戏模组震撼上线
- 22天前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章