您的位置:首页 > 编程语言 > C#

C#学习笔记之调用Webservice

2016-05-10 08:36 267 查看
1、首先发布一个Webservice:

(1)、打开VS2010,选择 :文件->新建->项目,



(2)、在弹出的“新建项目”窗口下,选择:其他语言->Visual C#->web,在该选项下创建一个“ASP.NET 空 Web 应用程序”,名字和位置按自己的习惯写;


(3)、此时,创建出来的只是一个空项目,需要在该项目名上右击,选择:添加->新建项;


(4)、在弹出的“添加新建项-xxxx”窗口中,选择:Visual C#->Web,在该选项下选择“Web 服务”,点击添加;


(5)、此时,一个完整的Webservice项目就创建好了;


(6)、然后,需要在该项目中添加一个简单的方法,求两个整数的和,如下:


(7)、最后,选择“启动调试”,或者按快捷键 F5,发布Webservice,发布成功的Webservice如下:


2、创建一个C#控制台程序访问Webservice,有两个种方法:

第一种方法 使用条件:本机必须可以联网访问到发布的Webservice,步骤如下:

(1)、打开VS2010,选择:文件->新建->项目,在弹出的“新建项目”窗口中选择:其他语言->Visual C#,在该选项下选择“控制台应用程序”,点击确定之后就创建了一个控制台应用程序的项目:


(2)、然后右击项目下的“引用”,选择“添加服务引用”:



(3)、在弹出的“添加服务引用窗口”中,点击左下角 “高级”;



(4)、在弹出的“服务引用设置”窗口中,点击左下角“添加Web引用”:



(5)、在弹出的“添加Web引用”窗口中,在URL后面输入之前发布的Webservice的地址:


(6)、输入地址之后,回车,如果本机能够联网访问到Webservice,会出现如下显示:



(7)、“web引用名”可以根据自己的需要随便修改,然后再点击“添加引用”按钮,此时,Webservice就被引用到该项目中了:



(8)、引用好Webservice之后,会自动生成一个文件:app.config,双击进入该文件,在“setting”项里面的“name”值是由两个下划线(_)拼接起来的三个字符串组成,最后一个字符串是类名,前面两个组成了该类的命名空间。



(9)、此时,还不能使用这个类(WebService1),还需要添加一个程序集引用,右击项目下的“引用”,选择“添加引用”,在弹出的“添加引用”窗口中选择.NET下的“System.Web.Service”,点击确定,引用成功。





(10)、此时,回到程序的main函数中,添加代码,实例化一个WebService1的对象,但是此时,你仍然会发现错误提示:找不到命名空间,如下:



解决办法有三种:

第一:直接手动添加命名空间,就是上面提到在app.config文件中的命名空间,把下划线改成点即可;

第二:选中类名WebService1,在类的左下角会有一个 帮助的选项,点开默认的第一个就是命名空间,如下;

第三,点中类名,使用快捷键:Alt+Shift+F10,也可以弹出帮助的选项,选择默认的第一个命名空间,如下;



(11)、此时,才可以正常调用webservice:代码如下:



其中,GetSum()是Webservice中的方法,两个参数是传给Webservice接收的,sum接收到的返回值就是Webservice方法中return的结果,输出结果是:55.

第二种方法:适用于本机不能通过联网访问webservice,比如:社保系统各个省厅的服务器,只有通过他们的内网才能访问。这种情况下如果想访问webservice中的方法,就要知道webservice的wsdl。操作方法如下:

(1)、已知一个webservice地址为:http://localhost:2890/WebService1.asmx;还拿上面发布的那个webservice做例子。在该地址后面接着写上:?wsdl,地址变为:http://localhost:2890/WebService1.asmx?wsdl,然后回车,会进入wsdl界面(要进入这个界面,只有在联网能访问webservice的情况下才能成功),如下:


(2)、然后在浏览器工具栏点击:文件->另存为,保存文件名的后缀要改成 wsdl,“保存类型”根据浏览器的不同也不同:IE浏览器的保存类型为:网页,仅源代码(*.xml;*.xht;*.xhtml;*.svg);Google
Chrome浏览器选择的是网页另存为,“保存类型”为:ASP.NET Web Service;但是保存之后的文件类型必须要是:Web Service Description Language才行,如下所示:







(3)、保存好wsdl文件之后,打开VS2010,新建一个C#控制台程序。然后选择菜单下的“工具->Visual Studio 命令提示”,打开VS自带的命令提示符:





(4)、使用命令:cd  wsdl文件的绝对路径,还要加一个根目录命令,进入到wsdl文件的目录内,然后使用命令:wsdl WebService1.wsdl(wsdl文件名),回车之后会自动生成一个cs文件:WebService1.cs





(5)、把WebService1.cs文件拷进C#控制台程序的项目文件夹中,然后右击项目名,选择:添加->现有项,添加刚才拷进来的Webservice1.cs;





(6)、添加成功之后,并不能直接使用,会报一个错误,如下所示。这是因为没有引用程序集,解决办法是:右击项目下的引用,选择添加引用,在弹出的“添加引用”窗口中选择.NET下的System.Web.Service即可,如下:





(7)、最后,在Main函数中添加代码,实现Webservice的调用,和第一种方法一样,如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: