`

不用编写客户端调试WebServices

 
阅读更多
当你写好了一个Web Services,肯定会需要一个客户端(调用端)来调用它,以检查运行是否正常。在Visual Studio.NET中你可以直接点击“运行”按钮,系统会自动生成一个Web Services的测试页来调用Web Method,虽然很方便,但这个测试页是通过HTTP/GET协议将参数加在URL后面传给Web Method的,这种调用方式(HTTP/POST也一样)只适合比较简单的Web Services,比如:传进来的参数是简单类型的,或者SOAP请求中不含SOAP消息头等等。

  如果我们的Web Services应用了一些比较复杂的功能,例如:请求参数为GET和POST协议都不能编码的复杂类型,应用了定制的SOAP消息编码格式(SOAP Encoding),使用了SOAP扩展等等。这个时候就需要使用WSDL的SOAP绑定,通过SOAP协议进行消息编码来进行调用,也就是说我们得自己去专门为这个Web Services写一个客户端。其中很重要的一点就是如果Web Services客户端要使用SOAP进行调用,客户端的代理类必须从 SoapHttpClientProtocol 类派生,而VS.NET自动生成的测试页的代理类是从HttpGetClientProtocol类派生的。当然VS.NET也能比较方便的编写客户端,而且你根本不必去理会代理类,因为这是自动生成的,你要做的就是像在本地一样调用Web Method。

  但问题又来了,如果你想直接编辑客户端发送的SOAP请求消息并查看接收到的响应消息时,在VS.NET里的实现就比较麻烦了,还得编一个SOAP扩展,这样一来工作量可就大了。好在Microsoft发布了.NET WebService Studio(WSS),它是用来对Web services进行交互性测试的一个万能的工具。WSS是一个很小(116K)的Windows Form应用程序,它结合了GotDotNet网站早期的WSDL Verification和WSDL Browser工具的特点,并增加了一个直观的用户界面,目前版本号为1.0。

  下面我就按照对一个Web Services的方法的调用步骤来讲解一下这个软件的使用:

  首先,在WSDL EndPoint文本框中输入一个有效的asmx或wsdl文件的URL,你也可以通过Browse Wsdl按钮打开一个本地的WSDL文件。然后在文本框中回车,WSS就下载WSDL(如果文本框中是asmx文件就生成它的WSDL),自动为该Web Services生成并编译一个客户端代理,整个过程可在Massages面板中看到。最后在Invoke面板中显示出一个包括该Web Services所有方法的树状视图。同时你可以在WSDL & Proxy面板中看到由这个工具自动生成的WSDL文件和其链接的XML文档定义Schema、客户端代理类(Proxy)、客户端调用代码(ClientCode)的详细内容。在Proxy代码中我们可以清楚地看到代理类继承自SoapHttpClientProtocol,因此这个工具毫无疑问是基于SOAP协议对Web Sevices进行调用,这样我们就可以使用与SOAP相关的各种功能。

  再来看看Invoke面板,点击一个Web方法,右边的Input框中会马上按照SOAP消息的结构以树形方式显示出调用这个方法所需的参数和其结构;在某个参数上点击一下,对应Input的Value框中也会马上显示出这个参数的类型信息,并且可以直接填入这个参数的值或指定其值为空,参数都填好后就可以通过Invoke按钮进行调用了。调用结束后,Output框中也会按照与Input框一样的方式显示这个方法调用返回的结果和其数据结构,并且同样能显示出返回结果的数据类型和值。

  让人兴奋的是,在Input和Output框中可以直接编辑消息头中的元素,这在测试要求提供消息头的Web Sevices时是十分必要的。如果要使用消息头(当然,前提是WSDL里做了相关约定),在消息头里的某个头元素上点击一下,对应的Value框中会显示出相关的类型信息,然后将IsNull设置为False,这时头元素前面就多了个加号,展开它就可以看到其下的参数,按上面讲过的方法可以设置头元素的参数的值。设置好各参数后,就可以调用需要消息头的Web Sevices了。真是方便至极呀!

  最后就该介绍Request/Response了,这个面板主要显示的是利用WSS这个工具调用远程方法时生成的请求消息和接收到的响应消息的内容。当你在Invoke面板中调用了一个方法之后,就可以在Request和Response框里看到原始的请求消息和响应消息,而且可以直接对SOAP请求消息进行修改,比如修改某元素的值或属性等等,然后按Send重新调用就可以看到结果,这对于深入理解SOAP消息有很大的帮助。在该面板的左边还可以设置发送请求的属性(GET/POST)、基本认证的用户名和密码、是否使用Cookie等,以便用更灵活的方式调用Web Services。

  如果你在局域网中用VS.NET进行过Web Services相关的开发,可能会发现通过Web引用只能添加局域网内的Web Services,而对Internet上提供的服务的却无能为力(这个问题可以通过编码的方式对客户端代理类的HTTP代理属性进行设置来解决),这是因为绝大部分Web Services都是通过HTTP协议进行调用,而局域网的HTTP代理服务器需要对外部的访问请求进行认证。正因为VS.NET中对于Web引用没有代理设置机制才会导致上述问题。所以,必须填入正确的验证信息(例如用户名和密码等)才能使绑定了HTTP协议的SOAP请求消息跨越防火墙到达服务端。在这一点上WSS又一次很好的简化了繁琐的步骤。

  打开Edit菜单的Options,在WsdlSettings项中可以设置代理服务器的域、用户名、密码,这样就可以方便地在局域网中直接调用Internet上的Web Services了,够简单吧!同时你还可以选择除SOAP外的其它的数据编码方式(HTTP/GET、HTTP/POST)和自动生成的代码的语言(C#、VB.NET、JS)以及SOAP消息内容的显示风格等。

  当然遗憾还是有的,比如缺乏对数据集DateSet的支持、不能通过UDDI进行Web Services查询等,但愿这些问题能在下一版中得到解决和完善。但瑕不掩瑜,WSS会给你带来一种绝对不一样的感受,只要你愿意,甚至可以直接把它当成所有Web Services的客户端,快来尽情享受Web Services的乐趣吧!

分享到:
评论

相关推荐

    Webservice接口调试工具

    .NET Webservice Studio是一种以交互方式调用Web方法的工具。 用户可以提供WSDL端点。...此工具适用于Web服务实现者,无需编写客户端代码即可测试其Web服务。 这也可以用于访问其WSDL端点已知的其他Web服务。

    Vbsedit 调试器

    Microsoft Visual Basic Scripting Edition 为各种环境提供有效的脚本编写手段,包括 Microsoft Internet Explorer 中的 Web 客户端脚本编写及 Microsoft Internet Information Services 中的 Web 服务器端脚本编写...

    ASP.net入门教程

    XML Web services 框架 可扩展的宿主环境和应用程序生命周期管理 可扩展的设计器环境 页和控件框架 ASP.NET 页和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网页。可以从任何...

    SQL Server 2008商业智能完美解决方案 3/3

    16.4 调试Integration Services包 377 16.5 检查点和事务 378 16.6 设计Integration Services包的最佳实践 380 16.7 数据事件探查 381 16.8 小结 384 第17章 商业智能解决方案中的Microsoft SQL Server 2008 ...

    SQL Server 2008商业智能完美解决方案 2/3

    16.4 调试Integration Services包 377 16.5 检查点和事务 378 16.6 设计Integration Services包的最佳实践 380 16.7 数据事件探查 381 16.8 小结 384 第17章 商业智能解决方案中的Microsoft SQL Server 2008 ...

    SQL Server 2008商业智能完美解决方案 1/3

    16.4 调试Integration Services包 377 16.5 检查点和事务 378 16.6 设计Integration Services包的最佳实践 380 16.7 数据事件探查 381 16.8 小结 384 第17章 商业智能解决方案中的Microsoft SQL Server 2008 ...

    SQL Server 2008 商业智能完美解决方案(3)

    16.4 调试Integration Services包 377 16.5 检查点和事务 378 16.6 设计Integration Services包的最佳实践 380 16.7 数据事件探查 381 16.8 小结 384 第17章 商业智能解决方案中的Microsoft SQL Server 2008 ...

    Microsoft .NET Framework 3.5 Service Pack 1

    ADO.NET Data Services Framework 由满足以下条件的模式和库组合而成:支持将数据公开为一项基于 REST(具象状态传输)的灵活数据服务,企业网络内部或整个 Internet 上的 Web 客户端都可以使用该服务。ADO.NET Data...

    JAVA程序开发大全---上半部分

    14.2.4 使用Web Services Explorer访问Web Service 250 14.2.5 使用Java客户端访问Web Service 251 14.3 向现有Web项目加入Web Service功能 252 14.4 创建直接调用Internet中的Web Service的客户端 252 14.4.1 创建...

    asp.net知识库

    使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署 ASP.NET 2.0 Security FAQs Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp...

    IIS6.0 IIS,互联网信息服务

    Internet Information Services(IIS,互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    4.8.6 my.webservices名称空间 251 4.9 扩展my名称空间 252 4.10 小结 254 第5章 用visual basic进行声明式编程 255 5.1 声明式编程与visual basic 256 5.2 使用xaml创建窗口 257 5.3 xaml语法 260 ...

    《JSP简明教程》课件

    J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持。 EJB EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构...

    ABP(2.02)框架相关Demo代码以及报错处理和中文说明手册

    通过Application Services自动创建Web Api层(不需要写ApiController层了) 提供基类和帮助类让我们方便地实现一些常见的任务 使用“约定优于配置原则” 客户端: Bootstrap、Less、AngularJs、jQuery、Modernizr...

    在线考试管理系统毕业设计

    本系统采用ASP3.0编写,服务器端采用VBScript5.5脚本,客户端采用JavaScript编写,数据库使用微软公司的大型关系数据库SQL Server 2000企业版,同时,页面制作采用了FrontPage XP、Dreamweaver MX、Adobe Photoshop...

Global site tag (gtag.js) - Google Analytics