使用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,生成一个新的代理类,以供使用。

Web服务协议以及使用方式

 Web服务是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不...
  • zhangzhaokun
  • zhangzhaokun
  • 2009年11月04日 08:16
  • 7674

web服务代理

在调用web服务程序的时候,通常使用get和post方法来调用,但是我们也可以通过web服务代理来调用。通过对已有的web服务程序的调用来实现异地使用。      首先我们需要建立一个web服务程序...
  • u013036278
  • u013036278
  • 2015年05月01日 17:04
  • 925

WEB服务访问的过程

先说说线程、进程、以及并发连接数,在说Web服务器。 1.进程与线程         进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。从...
  • eagle89
  • eagle89
  • 2017年09月08日 09:55
  • 230

使用BPEL创建Web服务组合

为简单起见,本例的Web服务组合只调用一个Web Service API。 本文环境是:Eclipse Juno Release + JRE 1.7 + Tomcat 7.0.29 + BPEL +...
  • steveyg
  • steveyg
  • 2015年07月02日 23:00
  • 571

使用Web服务

 在应用程序中使用数据库,Adobe提供了若干组件,如Web Service,HTTP Service,Remote Object Service这些组件都称为远程调用(RPC)组件。使用LinkBu...
  • Anglewing_nwpu
  • Anglewing_nwpu
  • 2007年06月09日 01:48
  • 533

Sliverlight调用WebService跨域问题解决

在SilverlightApplication正常添加webservice(承载网站中建webservice,这样就不存在跨域问题了,即域名一样如:localhost:4676)   http:...
  • wangdaoyin2010
  • wangdaoyin2010
  • 2015年04月10日 14:17
  • 515

Web服务器的常见端口

(1)80 访问时候,URL地址隐含了默认的端口80。如果不是80,则必须在URL中添加端口号。很多协议都有默认的端口号,如FTP为21,SMTP为25。 (2)139 由“NetBIOS...
  • liaozhongping
  • liaozhongping
  • 2015年09月20日 00:38
  • 1003

使用HTTPie测试Web服务

flask web 开发 P1681.问题(venv) C:\Users\Geek Lee\flasky>http --json --auth 123456789@qq.com:password GE...
  • GeekLeee
  • GeekLeee
  • 2016年09月05日 21:52
  • 1186

如何在linux下判断web服务是否开启?

对于web服务的开启的判断有以下几种常用方法: 1、端口查看:     本地:ss,netstat,lsof 1 2 3 4 5 ...
  • LemonTreey
  • LemonTreey
  • 2017年02月21日 17:31
  • 779

常用web服务端口对照详解

端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端 口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用 ...
  • yyysuge
  • yyysuge
  • 2014年03月17日 19:39
  • 1938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Web服务
举报原因:
原因补充:

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