使用Web服务

转载 2007年09月19日 17:34:00
 

上面讨论了如何创建Web服务,接下来就讨论如何使用它们。为此需要在代码中生成一个知道如何与给定Web服务进行通信的代理类。这样,代码中对Web服务进行的任何调用都要通过这个代理类,从表面看,这个代理类就等同于Web服务,代码也会认为我们有了Web服务的本地副本。而实际的情况是有许多HTTP通信工作在进行,只是我们感觉不到其中的细节。有两种方式可以完成这项任务:第一,可以使用WSDL.exe命令行工具;第二,可以使用VS.NET中的Add Web Reference菜单选项。

在命令行上使用WSDL.exe时,它会根据Web服务的WSDL描述生成一个包含代理类的.cs文件。使用Web服务的URL来指定该文件,例如:

WSDL http://localhost/PCSWebSrv1/Service1.asmx?WSDL

这样就会在Service1.cs文件中为上一小节中的示例生成一个代理类。这个代理类将以Web服务命名,在这个示例中就是Service1,该代理类包含一些方法,那些方法将可以调用相同名称的服务方法。在使用这个类时,只需把所生成的.cs文件添加到项目中,使用下面的代码就可以了:

Service1 myService = new Service1();

String result = myService.CanWeFixIt();

默认状态下,生成的类将放在根命名空间中,因此不需要使用using语句,但是,可以使用WSDL.exe命令行选项/n:<namespace>指定一个不同的命名空间。

这项技术按说应该不错了,但是,如果服务正处于开发或处于连续变动中,就比较费事了。当然,为了在每次编译之前自动更新所生成的代理类,这项技术可以用项目的构建选项来执行,但是我们有更好的方法。

下面在一个新的Web应用程序PCWebClient1中,为上一小节中的示例创建客户,来阐明这个更好的方法。现在创建这个新项目,在生成的.aspx页面中,用下面的代码替换现有的form声明:

    <form method="post" runat="server">

       <asp:Label Runat="server" ID="resultLabel"/><br>

       <asp:Button Runat="server" ID="triggerButton"

                   Text="Invoke CanWeFixIt()"/>

    </form>

接下来将把单击按钮事件处理程序与Web服务绑定起来。首先需要在项目中添加对Web服务的引用。其方法是:右击Solution Explorer中的新客户项目,选择Add Web Reference选项。然后,在出现的窗口中键入Web服务文件Service1.asmxURL,或者使用本地机器链接中的Web服务,自动查找它,如图26-3所示。

  26-3

接着,可以使用Add Reference按钮添加引用。但应先把Web引用的默认内容从localhost改为myWebService。现在单击Add Reference按钮,在Solution Explorer中把myWebService添加到项目的Web References部分,在Solution Explorer中显示隐藏的文件时,可以看到文件Reference.mapReference.csService1.discoService1.wsdl已添加到项目中。

Web引用名称myWebService也是使用代理类时需要引用的命名空间,在WebForm1.aspx.cs的代码中添加下面的using语句:

using PCSWebClient1.myWebService;

现在就可以在类中使用服务了,而不必提供服务的完全限定名称。

使用下面的代码把事件处理程序添加给窗体上的按钮(双击该按钮)

      private void triggerButton_Click(object sender, System.EventArgs e)

      {

         Service1 myService = new Service1();

         resultLabel.Text = myService.CanWeFixIt();

      }

运行应用程序并且单击按钮,浏览器窗口中将显示CanWeFixIt()的执行结果。

以后这个Web服务也许会改变,但是,使用这个方法,可以简单地右击Server Explorer中的Web Reference文件夹,并选择Update Web Reference,生成一个新的代理类,以供使用。

相关文章推荐

使用XML开发.NET Web服务(PDF)

  • 2006年11月09日 15:06
  • 19.9MB
  • 下载

VS中使用各种Web服务

===========================• 天气预报查询========================== --------WebTianQi.aspx前台------------ ...

使用Spring构建Restful的Web服务.pdf

  • 2017年03月20日 20:55
  • 22.89MB
  • 下载

使用Apache Axis部署 Web服务时的常见问题及其解决方法

本文详细介绍了在Linux环境下以Apache Axis+ Resin作为Web服务平台部署Web服务时的常见问题及解决方法。衷心希望本文对Web服务的开发人员或对Web服务感兴趣的读者能起到一定的帮...
  • dos_186
  • dos_186
  • 2015年08月26日 10:51
  • 382

使用Java Web服务构建SOA.part4

  • 2011年05月13日 23:15
  • 10.64MB
  • 下载

使用Java Web服务构建SOA.part3

  • 2011年05月13日 22:25
  • 11.5MB
  • 下载

使用Python 2.7中pycurl模块编写探测多节点Web服务质量脚本

使用Python 2.7中pycurl模块编写探测多节点Web服务质量脚本pycurl安装与说明pycurl说明PycURl是一个C语言写的libcurl的python绑定库。libcurl 是一个自...

使用XML开发.NET Web服务(PDF)

  • 2007年05月10日 11:41
  • 19.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Web服务
举报原因:
原因补充:

(最多只允许输入30个字)