`
isiqi
  • 浏览: 16453683 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

浅析WebService客户端应用方法

阅读更多
.NET平台内建了对Web service的支持,包括Web service的构建和使用。 与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web service的开发了。.NET Framework本身就全面支持Web service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。本文将带你用.NET创建和使用Web service。

  一 在.NET中创建Web service

  要在.NET中创建Web service,你只需在你的解决方案中选择"文件/添加新项",弹出如下图1所示的对话框:



  图1

  在此框中,选择"Web服务",并指定名称。Vs.Net将为你建立一个缺省的webservice框架。根据需要,你可以建立所需的webservice方法。

  如下代码是从sql server 2000的northwind数据库employees中返回所有employee信息的webservice方法。

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>[WebMethod] public string getEmployees() { string cnstr="server=njim01;database=northwind;uid=sa;pwd=64084888;"; string rsString; SqlConnection cn=new SqlConnection(cnstr); SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn); DataSet ds=new DataSet(); DataTable tbl; cmd.Fill(ds,"employees"); tbl=ds.Tables["employees"]; rsString="&lt;table border=\"0\" bgcolor=\"blue\" cellpadding=\"1\"    cellspacing=\"1\"&gt;&lt;tr bgcolor=\"white\"&gt;"; for(int i=0;i&lt;=ds.Tables["employees"].Columns.Count-1;i++) { rsString+="&lt;td&gt;"+ds.Tables["employees"].Columns[i].ColumnName+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; for(int i=0;i&lt;tbl.Rows.Count;i++) { rsString+="&lt;tr bgcolor=\"white\"&gt;"; for(int j=0;j&lt;=ds.Tables["employees"].Columns.Count-1;j++) { rsString+="&lt;td&gt;"+tbl.Rows[i][j]+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; } rsString+="&lt;/table&gt;"; return rsString; }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

  由此可见,在vs.net中建立一个WebService是方便的。

  二 WebService在客户端的应用

  通过对vs.net长期应用和研究,我们总结出WebService在客户端应用的方法主要有以下四种可能:

  1、 在同一个解决方案中调用WebService方法;

  2、 在不同的解决方案中调用WebService方法;

  3、 在Internet上调用WebService方法;

  4、 利用webservice.htc调用WebService方法。

  以下对上述四种方法分别进行介绍。

  1、在同一个解决方案中调用WebService方法

首先,我们需要建立一个名为myTest.sln的解决方案。该方案由一个名为testForm.aspx的web表单和一个testService.asmx的WebService组成。testForm.aspx的代码如下:

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn); DataSet ds=new DataSet(); DataTable tbl; cmd.Fill(ds,"employees"); tbl=ds.Tables["employees"]; rsString="&lt;table border=\"0\" bgcolor=\"blue\" cellpadding=\"1\"    cellspacing=\"1\"&gt;&lt;tr bgcolor=\"white\"&gt;"; for(int i=0;i&lt;=ds.Tables["employees"].Columns.Count-1;i++) { rsString+="&lt;td&gt;"+ds.Tables["employees"].Columns[i].ColumnName+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; for(int i=0;i&lt;tbl.Rows.Count;i++) { rsString+="&lt;tr bgcolor=\"white\"&gt;"; for(int j=0;j&lt;=ds.Tables["employees"].Columns.Count-1;j++) { rsString+="&lt;td&gt;"+tbl.Rows[i][j]+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; } rsString+="&lt;/table&gt;"; return rsString; }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

<ccid_code>  从以上代码可以看出,在testForm表单中,我们仅提供了一个testWebService按钮,当我们单击testWebService时,使用一个名为msg的&lt;span&gt;来显示testWebService中方法的返回值。 <br><br>  在testWebService.asmx中,我们仅建立一个方法,该方法代码如下:</ccid_code>

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>[WebMethod] public string getEmployees() { string cnstr="server=njim01;database=northwind;uid=sa;pwd=6408;"; string rsString; SqlConnection cn=new SqlConnection(cnstr); SqlDataAdapter cmd=new SqlDataAdapter("select * from employees",cn); DataSet ds=new DataSet(); DataTable tbl; cmd.Fill(ds,"employees"); tbl=ds.Tables["employees"]; rsString="&lt;table border=\"0\" bgcolor=\"blue\" cellpadding=\"1\"   cellspacing=\"1\"&gt;&lt;tr bgcolor=\"white\"&gt;"; for(int i=0;i&lt;=ds.Tables["employees"].Columns.Count-1;i++) { rsString+="&lt;td&gt;"+ds.Tables["employees"].Columns[i].ColumnName+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; for(int i=0;i&lt;tbl.Rows.Count;i++) { rsString+="&lt;tr bgcolor=\"white\"&gt;"; for(int j=0;j&lt;=ds.Tables["employees"].Columns.Count-1;j++) { rsString+="&lt;td&gt;"+tbl.Rows[i][j]+"&lt;/td&gt;"; } rsString+="&lt;/tr&gt;"; } rsString+="&lt;/table&gt;"; return rsString; }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>private void Button4_Click(object sender, System.EventArgs e) { testWebService webservice=new testWebService(); msg.InnerHtml=webservice.getCustomers(); }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

  事实上,在同一个解决方案中对本方案中的webservice方法的调用就是通过类的方式进行定义和调用的。

  2、在不同的解决方案中调用WebService方法 有可能我们的WebService不是在同一个解决方案建立的,比如我们在先前的方案中已经建立。现在我们要在新的解决方案中对它的方法进行调用。

  在此可分为两种情况:

  1、虽然webservice不在要调用它的解决方案中,但在同一台物理主机上;

  2、webservice和解决方案不在同一台物理主机上,如我们要调用microsoft的webservice样例,它在:

    http://chs.gotdotnet.com/quickstart/aspplus/samples/

      services/DataService/VB/DataService.asmx

  位置。如何调用?

  1) 在同一台物理主机上也有两种调用方法:

  ①直接引用 直接引用含有webservice解决方案的dll。例如我们在另外一个名

  为webservice.sln的解决方案中建立了一个名为math.asmx的webservice,在这个webservice中我们编写了一个方法:

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>[WebMethod] public float add(float x,float y) { return x+y; }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

  下面我们要在testForm.aspx表单中调用该方法:

  首先,我们在testForm.aspx表单中增加一个新按钮,名称为reference。

  其次,我们在myTest.sln解决方案的引用中将webservice.dll添加进来。

  第三,对reference按钮的reference_click()编码如下:

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>private void reference_Click(object sender, System.EventArgs e) { float x,y; webservice.math math1=new webservice.math(); /*在此定义了webservice对象math1*/ x=11.88f; y=23.19f; msg.InnerHtml=math1.add(x,y).ToString(); /*在此调用了math1对象的add()方法,并将结果显示在名为msg的&lt;span&gt;上*/ }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

<ccid_code>  当我们单击reference按钮时,add()方法调用的结果便显示在名为msg的&lt;span&gt;标记中。 <br><br>  ②web引用 事实上,vs.net提供了无比强大的功能,使得我们没有必要直接去引用一个webservice解决方案的dll。我们只需在"引用"上右击,选择"添加web引用……",此时弹出如下图2所示的窗口:</ccid_code>



  图2

  在地址栏中输入要调用webservice的位置,如

      http://localhost:8088/webservice/math.asmx

  此时,在myTest.sln下增加了一个"web引用"文件夹,在此文件夹下有一个"localhost1"项目,如下图3:



  图3

  图中web引用文件夹下的localhost1便是对另一个解决方案中的webservice引用。下面我们来看如何按这种引用方式在testForm.aspx表单中调用该webservice方法:

  首先,我们在testForm.aspx表单中增加一个新按钮,命名为localhost1。

  在localhost1按钮的localhost1_click()事件中编码如下:

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>private void localhost1_Click(object sender, System.EventArgs e) { float x,y; localhost1.math math1=new localhost1.math(); /*在此定义了webservice对象math1*/ x=16.1f; y=17.89f; msg.InnerHtml=math1.add(x,y).ToString(); /*在此调用了math1对象的add()方法,并将结果显示在名为msg的&lt;span&gt;上*/ }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

  当我们单击localhost1按钮时,这段代码同样完成了相应的方法调用。

  3、在Internet上调用WebService方法 事实上,在第2种情形的"web引用"方式是当前情况的一个特例。因为,当我们将web引用地址栏的地址改为指向Internet上某台主机上的一个webservice时便是在Internet上调用WebService方法。

  不妨让我们调用microsoft asp.net快速入门中的webservice样例,我们在添加"web引用"时,在地址栏中输入下面的webservice 地址:

      http://chs.gotdotnet.com/quickstart/aspplus/samples/

        services/DataService/VB/DataService.asmx

  如图3所示,在"web引用"文件夹下可以看见已经添加了一个新项目"com.gotdotnet.chs",在testForm.aspx表单中再新增一个按钮gowebservice,在gowebservice的click()事件中编码如下:

<ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="550" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>private void gowebservice_Click(object sender, System.EventArgs e) { com.gotdotnet.chs.DataService goWS=new com.gotdotnet.chs.DataService(); /*在此定义了webservice对象goWS*/ DataSet ds=new DataSet(); ds=goWS.GetTitleAuthors(); /*在此调用了goWS对象的GetTitleAuthors()方法,该方法返回一个DataSet对象*/ msg.InnerHtml=ds.Tables["Authors"].Rows.Count.ToString(); /*在此将Authors表的记录条数显示在名为msg的&lt;span&gt;上*/ }</ccid_code></pre></td></tr></tbody></table></ccid_nobr>

<ccid_code>  当我们单击gowebservice按钮后,对Internet上microsoft asp.net快速入门中的webservice样例的调用同样也会显示在msg上。 <br><br>  4、利用webservice.htc调用WebService方法 此方法不在赘述,请参看microsoft站点。 <br><br>  &lt;b&gt;三 结束语&lt;/b&gt; <br><br>  总之,WebService的功能非常强大,但在客户端如何调用webservice方法却难以找到相应的介绍,致使多数开发人员使用第4种方法,本人根据自己对vs.net的应用经验总结了以上几种方法,仅供vs.net开发人员参考!</ccid_code>
分享到:
评论

相关推荐

    C++通过gSOAP开发WebService客户端.docx

    本文档主要介绍了使用C++语言和gSOAP库开发WebService客户端的步骤和方法。gSOAP是一个基于C/C++的WebService开发库,支持SOAP和XML协议。下面是开发WebService客户端的详细步骤和知识点: 一、准备工作 在开发...

    soapui生成webservice客户端代码

    soapui生成webservice客户端代码,比较详细的讲解了配置,以及生成客户端代码的步骤

    webservice 客户端自动生成工具

    WebService客户端是调用这些服务的应用程序部分,而"WebService客户端自动生成工具"则是帮助开发者快速创建与WebService交互的代码的工具。在这种情况下,我们讨论的是一个使用Axis1.4批处理脚本来实现这个功能的...

    WebService客户端调用WebService服务示例代码——java

    WebService客户端调用WebService服务示例代码,java代码,纯手工,包括直接httpClient直接发送Saop报文调用和利用wsimport -keep 生成客户端代码后调用两种方式的示例。因涉及商务账户密码隐私,因此代码中的有些账号...

    使用cxf wsdl2java生成webservice客户端

    使用cxf wsdl2java生成webservice客户端命令

    WebService客户端

    WebService客户端是基于Web服务技术的一种应用程序,它允许不同的系统之间通过互联网进行通信和交互。在分布式计算环境中,WebService客户端扮演着关键角色,使得各种应用程序能够跨平台、跨语言地共享数据和服务。 ...

    webservice客户端简单实例

    5. **编写客户端应用程序**:在生成的代码基础上,编写Java程序,创建客户端代理对象,调用服务的方法。例如,如果你的服务有一个名为`sayHello`的方法,你可以这样调用: ```java HelloService service = new ...

    根据wsdl文件生成webservice客户端工具(java)

    根据对方提供的webservice地址,你先将对方webservice的wsdl文件描述文件保存到本地为后缀名为.wsdl的文件,然后保存到Tools的这个文件夹下,编辑WSDL2AxisClient.bat这个文件,将%Java_Cmd% org.apache.axis.wsdl....

    Java生成WebService客户端代码操作步骤.txt

    Java开发生生WebService客户端代码操作步骤 Java开发生生WebService客户端代码操作步骤 Java开发生生WebService客户端代码操作步骤

    webservice 客户端 服务端实例 代码

    本实例将详细介绍WebService客户端和服务端的实现,包括完整的代码示例。 1. WebService服务端开发 服务端是提供功能接口的地方,通常称为Web服务提供商。创建一个WebService服务端,首先需要定义服务接口,这个...

    C#.NET WebService 客户端+服务器

    本文将深入探讨"C#.NET WebService 客户端+服务器"的主题,介绍如何创建和调用Web服务,以及Web服务的三种访问方式。 首先,Web服务是一种基于标准协议(如SOAP和HTTP)的平台无关的通信机制,允许不同系统的应用...

    Java写WebService客户端

    本文将通过分析一个具体的Java WebService客户端示例代码,深入探讨其构建原理、关键技术点以及实际应用。 #### 二、核心概念解析 ##### 1. WebService简介 WebService是一种跨平台的服务器端应用,它提供了一种...

    eclipse根据wsdl文件生成webservice客户端-图例.pdf

    其中一个重要的应用场景是使用 wsdl 文件生成 webservice 客户端。在本文中,我们将介绍如何使用 eclipse 根据 wsdl 文件生成 webservice 客户端。 一、 前期准备 在开始生成 webservice 客户端之前,我们需要进行...

    webservice 客户端 实例 java

    webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java

    webService在客户端调用

    webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用...

    WebService客户端Demo

    **WebService客户端Demo详解** 在IT行业中,WebService是一种广泛使用的接口通信技术,它允许不同系统间的交互,不受开发语言和平台的限制。本示例“WebService客户端Demo”将着重讲解如何利用SOAP(Simple Object ...

    webService客户端调用服务端传对象参数

    这个工程详细的介绍了webService服务客户端如何调用简单和复杂的webService,其中就包括传递的参数是对象类型,返回数据是数组类型,还有最简单的基本类型。压缩包里还配置说明,清晰的说明webService的整个过程,对...

    webservice客户端生成工具

    客户端生成工具是实现Web服务交互的关键组件,它能够帮助开发者自动创建与WebService接口进行通信的客户端代码,大大简化了开发流程。本文将详细介绍关于Web服务客户端生成工具的相关知识点。 1. **Web服务标准与...

    C# WebService 客户端 服务器 Json

    本主题聚焦于C#中的WebService客户端和服务器的交互,以及如何利用Json进行数据交换。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写而被广泛应用。 一、C# WebService简介 ...

    webservice客户端client,made by .net

    在本案例中,"webservice客户端client,made by .net"是一个使用Microsoft的.NET Framework开发的Web服务客户端工具。这个客户端使得开发者能够便捷地与Web服务进行交互,测试和调用Web服务提供的各种功能。 首先,...

Global site tag (gtag.js) - Google Analytics