【C#】用wsdl命令将webservice生成代理类(.cs类文件),并测试调用(可解决很多在Linux下调用的奇怪问题)

在很多时间,我们调用webservice的时候都是喜欢直接引用服务,比如这样


这样引用服务虽然方便,但是却没有这么灵活,而且如果你的项目部署在Linux下面的话,可能会遇到很多奇奇怪怪的问题,诸如什么强弱类型转换啊,什么dll无法加载之类的。那么除了引用这种方法外,还有什么方法可以调用webservice呢?实际上方法有很多,例如soap,get,post,代理类等等,当然,get和post方法需要webservice开放了这些功能才可以使用,如果限制了就没有办法了。今天,我们就来演示另外代理类调用webservice的方法,这种方法的好处就是直接把服务生成了本地cs代码,自己可以对cs里面的代码进行删减,把没用的,多余的代码都可以删掉。下面我们正式开始:

1、首先我们先建一个测试的webservice



2、将这个webservice发布到服务器上

发布后的地址是:http://vps.7var.com:81/test.asmx(当然,这个地址只是我演示的时候可用,后期我可能就删掉了,想测试的朋友们自己搭建服务器吧,本地的就可以了,不一定要发布到网上)


3、将webservice保存为.wsdl文件

用IE打开webservice的地址,然后在后面加上?wsdl,比如我上面这个地址变成了http://vps.7var.com:81/test.asmx?wsdl

然后在菜单栏-->文件-->另存为-->将页面保存为.wsdl文件,比如我这里保存到D:\test.wsdl




4、用wsdl命令将webservice生成代理类

在visual studio的安装目录或者开始菜单中,找到visual studio 开发人员命令提示(不一定叫这个名字,像VS2010就叫Visual Studio 命令提示(2010)),反正差不多就是这样的名字的了。或者你也可以直接在VS的安装目录下搜索wsdl.exe的路径,然后直接用。

打开命令提示窗口后,我们输入wsdl d:\test.wsdl /out:d:/test.cs(注意这里的格式/out:,还有后面注意指定路径,这样.cs文件才会在你指定的地方生成,按下回车键后,在d盘就多了一个test.cs文件







打开test.cs文件可以看到如下内容



这个就是由wsdl生成的代理类,我们只要把这个类放到项目中,直接调用这个类里面的方法,就如同调用webservice里面的方法一样了。是不是感觉方便多了?


如果你懒得把webservice保存成.wsdl文件也可以,我们可以直接在使用wsdl命令的时候,指定webservice的地址,同样可以生成cs文件,如下图


同样可以生成.cs代理类,这种方法更加快捷,省去了用IE保存文件的步骤。


5、测试代理类

下面我们新建一个C# WinForm项目来测试生成的代理类,将刚刚生成的test.cs类文件添加到我们的项目中。



在窗体中添加一个按钮,并编写代码如下:



编译运行,发现报错了~



这是因为代理类里面引用了System.Web.Services,所以我们只要把这个玩意加进来即可。选中项目,点击鼠标右键,添加引用,在左上角选择程序集-->框架,然后在右边列表中找到System.Web.Services,然后打勾,确定即可。

引用添加进来之后,我们再次编译运行,成功~按下按钮,弹出提示Hello World



本次代理类调用成功。方法是不是很简单?虽然感觉上比引用服务要麻烦点(因为要生成cs文件,实际也并不麻烦,1分钟都不用就能完成的事情),但是用代理类这种方法的好处就是,你可以对test.cs进行任意修改,当然前提是你能看懂里面的代码,知道哪些可以改,哪些不能改。


今天的教程就到这里~

  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号