使用Web服务

 

上面讨论了如何创建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,生成一个新的代理类,以供使用。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值