|
在 SOAP 1.2 推出之前,使用 HTTP 访问基于 SOAP 的 Web 服务的唯一方法是使用 POST 请求。您将需要创建能创建 POST 请求并使用 SOAP 消息作为请求的内容的客户机。不过,SOAP 1.2 定义了使用 GET 请求访问基于 SOA 的 Web 服务的方法。
GET 与 POST 对比
继续我们的讨论之前,务必了解通过 HTTP 的 GET 和 POST 请求的区别。尽管很多 Web 程序员所进行的处理似乎表明二者之间是可以互换的,但实际上二者的用途并不相同。GET 中的所有关于所请求的资源的信息都包含在 URL(通常作为参数),仅用于等幂请求。这些请求是没有“副作用”的请求。也就是说,应该能够数十次、数百次、数千次地调用这个请求,但这个请求不会更改任何东西。例如,请求 Albuquerque 的当前气温的 Web 请求就是等幂请求。而将注释传入到博客数据库的 Web 请求则不是。
这是因为 GET 请求可以添加到用户的书签,能在不会引发警告的情况下进行访问。还可以对其进行引用,而不会引发警告。另一方面,POST 请求将其信息包含在请求的正文中,因此很难进行随机的重复。
就 SOAP 而言,这意味着应该能够对仅检索信息而不进行更改的 SOAP 请求使用 GET。对于进行更改的任何操作,仍然都应使用 POST。
访问服务
在 Axis2 中,可以生成 GET 请求,服务器会将其转换为 SOAP 消息,然后将有效负载作为结果返回。例如,请将浏览器指向清单 31 中所示的位置。
清单 31. 访问服务
http://localhost:8080/axis2/services/CMSService/getNumberOfArticles?category=classifieds
如果使用 0.94 版,将看到清单 32 中所示的响应。
清单 31. SOAP 有效负载响应
<resp:numberOfArcticles>42</resp:numberOfArcticles>
不过,这并不十分准确。根据 SOAP 1.2 建议规范,应该能够看到整个 SOAP 响应。这在 Axis2 将来的版本中可能会发生更改。
|