Unity生成WebService代理類


普通的.net程序中,如果我們想引用webService,只需在項目中右鍵選擇添加服務引用,然后在地址欄中輸入Webservice地址,單擊“轉到”按鈕,找到服務后再單擊確定,Visual Studio就會自動在項目中生成一個WebReference的文件夾和一些文件,這些文件即是WebService保存在本地的代理,以方便我們調用WebService。例如,某網上股票查詢的免費WebService地址為:http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl,在Visual Studio中添加服務引用后:

然而在Unity中,並沒有地方可以讓我們直接添加服務引用生成代理類。這個時候就要手動生成了。那么該如何去做?
其實Visual Studio能自動生成代理類也只不過是調用了微軟的WebService代理生成工具wsdl.exe,就是這個文件幫助我們生成了代理類。而在Unity中,該文件位於unity安裝目錄下,例如我的是:D:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0\wsdl.exe
 
Unity中的dll不同於普通Visual Studio程序集,首先,在Unity中將"Api Compatibility Level"改成2.0:
打開路徑D:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0,找到System.ServiceModel.dll、System.ServiceModel.Web.dll、System.Web.Services.dll這三個程序集,將其拷到你的Unity工程下,Unity會自動添加對這些程序集的引用:
運行CMD命令行程序執行:
D:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0>wsdl.exe / language:CS/ / n:TestDemo /out: d:\TestService.cs  http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl
 
1: D:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0:Unity下的程序集路徑
2: language:CS:生成代理類語言:請從“CS”、“VB”、“JS”、“VJS”、
    “CPP”中選擇,或者為實現 System.CodeDom.Compiler.CodeDomProvider
    的類提供一個完全限定的名稱。默認語言為“CS”(CSharp)。
3: n:TestDemo:生成代理類所使用的命名空間
3: d:\TestService.cs :輸出路徑及生成文件名稱
4: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl:web service的wsdl地址
之后會提示生成成功:

找到生成的.CS文件並將其放到Unity工程下的某個文件夾中,這樣就可以調用這個文件下的代理來訪問Webservice了。
這樣生成代理類是不是有些麻煩呢?好,來看一下我做的一個工具吧:

說明:
1.生成的類語言是C#
2.WebServices的服務列表暫時沒做(因為我太懶了),點擊“轉到”就自動生成代理類了
3.輸出路徑默認為D盤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM