wordpress綁定多域名合肥網(wǎng)絡(luò)優(yōu)化推廣公司
C# .Net6 指定WSDL, 調(diào)用該接口服務(wù)。
- IDE: Microsoft Visual Studio Community 2022 (64 位)
- 平臺:.Net6
- 協(xié)議:Soap協(xié)議 Xml格式
功能
- 需要開發(fā)一個前置機程序, 用于和硬件程序交互,
- 已知條件是:嵌入式同事提供另一個約定好的*.wsdl文件作為雙方通信的Webservice接口協(xié)議,對方是服務(wù)端,前置機是客戶端
實現(xiàn)
通過WSDL文件,生成WEB服務(wù)
注意,這里,我的VS2022的提示步驟和網(wǎng)上查到的操作步驟略有不同,下面的步驟是我的VS2022的操作步驟:
-
首先,在 VS2022 中打開 .NET 6 項目或者新建一個 .NET 6 項目。
-
在“解決方案資源管理器”中,右鍵單擊項目名稱,然后選擇“添加”->“服務(wù)引用”。
-
在“添加服務(wù)引用”窗口中,有三個選項,
- OpenAPI,
- gRPC
- WCF Web Service
這里選擇 WCF Web Service,進入窗口“添加新的WCF Web Service服務(wù)引用”
-
點擊“瀏覽”按鈕,然后從文件系統(tǒng)中選擇你的 WSDL 文件。
-
選中 WSDL 文件后,服務(wù)引用的配置將在窗口下方顯示出來。這里可以在下面的輸入框,修改命名空間為你想要的名稱,點擊下一步,在新窗口中,可以指定數(shù)據(jù)類型選項,默認不需要改,點擊“完成”。
-
此時,VS2022 會根據(jù)你的 WSDL 文件生成 Web 服務(wù)的代碼,即:原Webservice服務(wù)的代理類。
-
還有一個生成Webservice服務(wù)代理類的方法:
- 用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文件的位置
- 具體用法,可以使用搜索引擎查詢,這里不再贅述。
調(diào)用該WebService的方法
public static async Task TestCallWs() {mydemo.TestMyClient serv = null;try{var binding = new BasicHttpBinding();var endpoint = new EndpointAddress(FSUURL);serv = new mydemo.TestMyClient(binding, endpoint);var result = await serv.invokeAsync(FSU_Params);Console.WriteLine("返回接口數(shù)據(jù):\n " + result);}catch(HttpRequestException e){Console.WriteLine(e.Message);}finally{if (serv != null) {serv.Close();}}}
完結(jié)和思考
- 其實我一直是想用HttpClient來調(diào)用這個Webservice,因為很多舊的網(wǎng)絡(luò)請求類,都被建議使用HttpClient代替,HttpClient也支持Soap協(xié)議,官網(wǎng)也說HttpClient是網(wǎng)絡(luò)請求的優(yōu)化成果,性能更好,但一直調(diào)用不通。不知道是WSDL定義不夠規(guī)范,還是代碼的問題。暫時先用 BasicHttpBinding來實現(xiàn)。后續(xù)會繼續(xù)琢磨。