当开发人员在Visual Studio .NET中进行Web service的开发时,IDE完成了大部分的用于调用Web service的复合管道。开发人员可以不用真正理解SOAP或者用于Web service描述语言(WSDL)文件的高级XML实现的内部原理,就能编写以及消费Web service。
默认情况下,Visual Studio .NET使用SOAP作为请求Web service以及Web service应答的通信传输协议。但是如果你需要从一个不支持SOAP的应用程序消费Web service;或者可能你使用的是支持SOAP通信的语言,但是需要更手工的方法来编写Web service的消费者,情况会是怎么样呢?
我们将重点给出两个消费者调用Web service的可用方法:HttpGet和HttpPost。这些方法知道的人不多,使用也很少,因为它们没有SOAP实用,没有SOAP功能强大。虽然如此,其能力就在于此,当你的应用程序不能用SOAP去消费Web service的时候,你可以选择使用它们。
HttpGet
HttpGet是通过Http协议请求信息的最基本的方法。参数使用一个查询字符串(querystring)传递给被请求的资源。
当你在浏览器中键入Web service的地址,并且通过Help页面调用Web service的任何方法时,你事实上就是在用HttpGet调用Web service。你提供的任何参数都被作为一个查询字符串添加到URL上。
方法的名字和它的参数出现在URL中,Web service能对其解释并分析任何参数的名字/值对(假设你没有为Web service关闭HttpGet)。Web service完成它的逻辑并返回给客户一个XML文档。
虽然这种方法有点过于简单,而且由于对方法名字和参数的困难编码使得它不那么的面向对象,但是事实上它却能使世界上的任何Web浏览器访问你的Web service。
HttpPost
HttpPost的原理与HttpGet的类似。参数的发送一般是通过HTML表单完成的。设置<form>标记的方法属性以一种更加谨慎的方法将信息发送给请求者。
将<form>标记的动作属性设置为Web service的名字还有要执行的方法的名字,就可以使用HttpPost调用一个Web service。如果方法还需要任何参数,那么这些参数必须定义为HTML表单的元素。元素的值被发送给Web service,Web service然后就分析名字/值对并传递一个XML文档给客户。
再一次说明,只有在Web service的HttpPost没有被禁用的情况下Web浏览器才能通过发送HTML表单调用Web service。