公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#調(diào)用WebService的3種方式:直接調(diào)用、根據(jù)wsdl生成webservice的.cs文件及生成dll調(diào)用、動(dòng)態(tài)調(diào)用

admin
2023年8月22日 15:23 本文熱度 1351

關(guān)于soapheader調(diào)用,可以參考:C#調(diào)用Java的WebService添加SOAPHeader驗(yàn)證

1.直接調(diào)用

已知webservice路徑,則可以直接 添加服務(wù)引用--高級(jí)--添加web引用 直接輸入webservice URL。這個(gè)比較常見(jiàn)也很簡(jiǎn)單,即有完整的webservice文件目錄如下圖所示:

 

也可以在本地IIS根據(jù)webservice文件目錄新發(fā)布一個(gè)webservice,然后程序動(dòng)態(tài)調(diào)用,修改Url:

1
public new string Url { setget; }

2.根據(jù)wsdl文件生成webservice 的.cs文件 及 生成dll C#調(diào)用  

有時(shí)沒(méi)有這么多文件,只有wsdl文件,wsdl文件可以有別人提供或者根據(jù)webservice地址獲?。?/p>

http://localhost:8888/WS.asmx?wsdl

 

 Visual Studio 2013->Visual Studio Tools->VS2013 開發(fā)人員命令提示
 
命令行輸入:

wsdl E:\WS.wsdl /out:WS.cs

 
E:\WS.wsdl  是wsdl文件存儲(chǔ)路徑,也可以是http://localhost:8888/WS.asmx?wsdl,不報(bào)錯(cuò)的話,看路徑下 Program Files\Microsoft Visual Studio 12.0\WS.cs已經(jīng)自動(dòng)生成。
 
.cs文件看函數(shù)聲明,結(jié)構(gòu)體等都非常方便,然后命令行執(zhí)行:
csc /t:library WS.cs
 
同樣的路徑下,生成了WS.dll,拷貝出去放到項(xiàng)目文件夾下,C# winform程序也可以添加引用了。生成的文件默認(rèn)在這里:

  
默認(rèn)生成的SOAP版本為1.1,可以

G:\Program Files\Microsoft Visual Studio 12.0>wsdl E:\e.wsdl /protocol:SOAP12 /out:e.cs

來(lái)指定1.2  

3.C# 動(dòng)態(tài)調(diào)用WebService  

在C#程序中,若要調(diào)用WebService,一般是采用"添加Web引用"的方式來(lái)實(shí)現(xiàn)的。但如果此WebService的URL是在程序運(yùn)行過(guò)程中才能獲得的,那怎么辦呢?那就必須是"動(dòng)態(tài)"調(diào)用這個(gè)WebService了。舉個(gè)使用它的例子:

 [] args =  [, );             
DataTable dt = WebServiceHelper.InvokeWebService(, , args)  DataTable;

  恩~有點(diǎn)麻煩,這意味著每次我都要把想調(diào)用的函數(shù)的參數(shù)組織成一個(gè)object[]才行,且每次調(diào)用InvokeWebService都是在內(nèi)存中創(chuàng)建動(dòng)態(tài)程序集,效率極低。則次種方法絕對(duì)沒(méi)有直接用“實(shí)例名.方法名(參數(shù)列表)”來(lái)的舒服。我把它放到一個(gè)叫WebServiceHelper.cs的類里面了。 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System.IO;
using System.Web.Services.Description;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.CodeDom;
  
/// <summary>  
        /// 動(dòng)態(tài)調(diào)用WebService  
        /// </summary>  
        /// <param name="url">WebService地址</param>  
        /// <param name="classname">類名</param>  
        /// <param name="methodname">方法名(模塊名)</param>  
        /// <param name="args">參數(shù)列表</param>  
        /// <returns>object</returns>  
        public static object InvokeWebService(string url, string classname, string methodname, object[] args) 
        
            string @namespace "ServiceBase.WebService.DynamicWebLoad"
            if (classname == null || classname == ""
            
                classname = WebServiceHelper.GetClassName(url); 
            
            //獲取服務(wù)描述語(yǔ)言(WSDL)  
            WebClient wc = new WebClient(); 
            Stream stream = wc.OpenRead(url + "?WSDL"); 
            ServiceDescription sd = ServiceDescription.Read(stream); 
            ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); 
            sdi.AddServiceDescription(sd, """"); 
            CodeNamespace cn = new CodeNamespace(@namespace); 
            //生成客戶端代理類代碼  
            CodeCompileUnit ccu = new CodeCompileUnit(); 
            ccu.Namespaces.Add(cn); 
            sdi.Import(cn, ccu); 
            CSharpCodeProvider csc = new CSharpCodeProvider(); 
            ICodeCompiler icc = csc.createCompiler(); 
            //設(shè)定編譯器的參數(shù)  
            CompilerParameters cplist = new CompilerParameters(); 
            cplist.Generateexecutable = false
            cplist.GenerateInMemory = true
            cplist.ReferencedAssemblies.Add("System.dll"); 
            cplist.ReferencedAssemblies.Add("System.XML.dll"); 
            cplist.ReferencedAssemblies.Add("System.Web.Services.dll"); 
            cplist.ReferencedAssemblies.Add("System.Data.dll"); 
            //編譯代理類  
            CompilerResults cr = icc.CompileAssemblyfromDom(cplist, ccu); 
            if (true == cr.Errors.HasErrors) 
            
                System.Text.StringBuilder sb = new StringBuilder(); 
                foreach (CompilerError ce in cr.Errors) 
                
                    sb.Append(ce.ToString()); 
                    sb.Append(System.Environment.NewLine); 
                
                throw new Exception(sb.ToString()); 
            
            //生成代理實(shí)例,并調(diào)用方法  
            System.Reflection.Assembly assembly = cr.CompiledAssembly; 
            Type t = assembly.GetType(@namespace "." + classname, truetrue); 
            object obj = Activator.createInstance(t); 
            System.Reflection.MethodInfo mi = t.GetMethod(methodname); 
            return mi.Invoke(obj, args); 
        
   
        private static string GetClassName(string url) 
        
            string[] parts = url.Split('/'); 
            string[] pps = parts[parts.Length - 1].Split('.'); 
            return pps[0]; 
        

  

參考 http://blog.csdn.net/chuxiamuxiang/article/details/5731988


該文章在 2023/8/22 15:29:06 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品亚洲精品日韩己满 | 国产成人精品日本亚洲直播 | 国产极品精品免费视频能看的 | 国产日韩精品无码 | 国产另类欧美激情 | 国产av一二三四又爽又色又色 | 91麻豆精品久久久久蜜臀 | 91麻豆精品国产 | 成人女人看片免费视频放人 | 国产黄色在线 | 国产不卡一区二区三区免费视 | 国色天香精品卡一卡2卡3卡4卡 | 国产高清爆乳乱码女大 | 高清无码精品特黄 | 丰满肥臀大屁股熟妇激情 | 国产精品女同一区二区 | 国产成人手机在线视频在线观看 | 国产综合精品一区二 | 99久久精品免费看国产情侣 | 国产极品尤物粉嫩泬在线观看 | 99精品视频只99有精品 | 2025精品国夜夜天天拍拍 | 国产欧美日韩a片免费软件 国产欧美日韩va另类 | 国产精品一区不卡 | 国产盗摄视频在线观看 | 国产成人精品免费一区 | 国产美女裸体无遮挡免费视频 | 国产a级三级三级三级 | 国产98色在线| 18禁白丝喷水视频w 18禁白丝喷水视频www | 精品亚洲高清一区二区三 | 国产成人综合亚洲不在线 | 国产一区二区在线观看无码 | 国产原创巨作精品 | 国产成人av一区二区三 | 国产亚洲精aa在线观看不卡 | 国产极品乱码在线观看www | 2025无码最新国产在线观看 | 国模裸体无码xxxx视频 | 精品国产一区二区av麻豆不卡 | 国产精品一线二线三线品牌 |