如何调用远程web service

如何调用远程web service
1. 生成.dll文件 (先用WSDL.exe生成代理类,再编译生成.dll,这样就可以直接引用了)
2. 直接web引用  用vs2005

 

如何创建和使用Web Service代理类 
Web服务代理是支持.net的编程语言文件,由.net框架提供的WSDL工具自动生成。代理类不包含任何应用程序逻辑。相反,他包含关于如何传递参数和检索结果的传输逻辑,还包含Web服务中的方法及原型列表。代理类可以从任何WSDL文件创建。 

可以像访问com对象一样访问Web服务。要访问Web服务,需要从本地计算机上的Web服务的WSDL文档创建代理类。.net提供了名为WSDL.exe的工具以自动生成代理类文件。下面详细说明其创建和使用过程: 
1、 新建一个asp应用程序(#C)工程,工程名为TeachShow,在TeachShow工程中创建一个文件夹Charpter8,在该文件夹下创建一个新的Web服务,取名为:Computer.asmx 
2、 切换到代码视图,编写下面的代码: 
[WebMethod(Description="用于相加运算", EnableSession=false)] 
public int Add(int a,int b) 

return a+b; 

[WebMethod(Description="用于相减运算", EnableSession=false)] 
public int Sub(int a,int b) 

return a+b; 

[WebMethod(Description="用于相乘运算", EnableSession=false)] 
public int Multi(int a,int b) 

return a*b; 

[WebMethod(Description="用于相除运算", EnableSession=false)] 
public double Devide(int a,int b) 

return Convert.ToDouble(a)/Convert.ToDouble(b); 
}

3、按F5编译整个工程(这一步一定要做,如果不做第4步无法实现) 

4、打开MS.net 2003的命令提示工具,输入:C:/>wsdl http://localhost/TeachShow/Charpter8/FirstAndUse/Computer.asmx /n:ComputerNameSpace,其中,ComputerNameSpace是自定义的命名空间。提示如下: 
Microsoft (R) Web 服务描述语言实用工具 
[Microsoft (R) .NET Framework,版本 1.1.4322.573] 
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved. 

正在写入文件“C:/Computer.cs”。 

5、注意,此时在C:盘(其实就是命令提示符的当前目录)下生成一个和Computer.asmx相同文件名的C#源文件Computer.cs。 

6、编译Computer.cs文件,在命令提示符下输入如下命令:C:/>csc /out:ComputerDll.dll /t:library /r:System.Web.Services.dll c:/Computer.cs。其中,/out:ComputerDll.dll是要输出的dll文件,/t:library是输出文件类型,/r:System.Web.Services.dll是要引用的组件,c:/Computer.cs是第4步生成的C#文件。 

7、此时,将会在C:盘下生成一个叫ComputerDll.dll的文件,要使用这个文件,必须复制到TeachShow文件夹下的bin目录下。默认情况下为:C:/Inetpub/wwwroot/TeachShow/bin。 

8、新建一个名为TestWSDL.aspx的WEB窗体文件,并添加一个引用,将刚才生成的ComputerDll.dll文件作为引用添加到工程中。 

9、在TestWSDL.aspx窗体的Load事件中编写代码: 
ComputerNameSpace.Computer com=new ComputerNameSpace.Computer(); 
this.Response.Write("和:"+com.Add(45,65).ToString()+" "); 
this.Response.Write("减:"+com.Sub(78,900).ToString()+""); 
this.Response.Write("乘:"+com.Multi(43,55).ToString()+""); 
this.Response.Write("除:"+com.Devide(1000,33).ToString()); 
显示结果: 
和:110 
减:978 
乘:2365 
除:30.3030303030303 

10、至此,程序完成。

-----------------------------------------------------------

直接用VS2005利用web service地址直接引用

webservice提供一个接口,供我们调用,只需调用其相应的方法,就会有数据返回,数据是以xml格式返回的.  
有朋友问到:在我的blog中曾提到一些实用的Web Service,但不知道如何在vs中调用它,这里写了一个简单的教程. 
希望  能有所帮助.   
几个实用的Web Service地址  
http://www.lemongtree.com/2006/03/28/0000307.aspx
这里我以天气预报地址:http://www.wopos.com/webservice/weather.asmx  为例来说明.    
首先,我们在vs2005新建一个工程,这个工程可以是一个web工程,也可以是一个win程序.   
当然,你也可以在vs2003中做下面的操作.我这里是建立的一个web工程 
选取asp.net网站,然后确定  这时,vs2005会自动为我们新建一个default.aspx并已经打开了该文件   
我们就在这个文件中来操作它  

下一步,我们选中网站,单击右键,选择添加web引用,这样就可以引用外部的web service了,这是最关键的一步.   
在下面的对话框中输入远程的web service地址,如:http://www.wopos.com/webservice/weather.asmx   
再点击"前往",vs会自动搜索该web service上的所有方法  
web引用名相当于Namespace,你可以作更改,也可以用默认的,一般默认的引用名是域名的反写,vs还会告诉我们在这里找到了多少个方法 等有用的信息  

然后单击"添加引用",这时我们的工程下就会多出一个名为"App_WebReferences"的目录(vs2003下可能会有所不同),  

这时,表明我们已经引用了外部的web service,我们在代码区可以像使用一般的类那样来调用它.现在转到代码区 当我敲入com时,vs已经提示我了  

创建一个Weather类的实例,然后调用getWeather(string city)方法就行了 
最终的代码 

protected void Page_Load(object sender, EventArgs e)    
  {         
com.wopos.www.Weather service = new com.wopos.www.Weather();       
   Response.Write(service.getWeather("武汉"));     

现在编译预览 

OK!已经取到数据了,但格式并不是我们需要的,所以需要进一步处理,如何处理,请大家参考"几个实用的Web Service"中的相关说明,这里就不多说了.   
由此可见,调用一个web service是非常简单的,但是,如果远程的web service的地址做了更改,或是改变了方法名,那我们的web service就要重新引用了并编译了, 所以最好是把方法名和service URL写在配置文件中,这样就方便多了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值