如何学习SOAP?

问题描述:

我已经使用映射组件创建了一个Web应用程序。我想使用除谷歌以外的其他地理编码服务,但所有我发现使用SOAP与网站进行通信。我以前从来没有用肥皂。有谁知道有什么好的资源可以帮我解决这个问题吗?我使用PHP集成来构建Web应用程序如何学习SOAP?

编辑:我现在需要使用Soap进行地理编码...所以如果您也知道任何良好的服务,那就太棒了。

再次编辑:基本上,我需要学习的肥皂,所以我可以用http://www.nn4d.com/site/global/build/web_services/geocoding_reversegeocoding/map24geocoder51service/map24geocoder51service.jsp

+0

使用SOAP库。我没有在PHP中使用过自己,但很多使用我们的Web服务的人使用NuSOAP http://sourceforge.net/projects/nusoap/它应该为你抽象所有复杂的东西。 – Rup 2010-11-16 16:42:25

学习SOAP本身需要你学习XML和大量的SOAP特定的东西。

但是,您已经标记了您的问题PHP,因此我假定您实际要求的是了解如何通过PHP使用SOAP Web服务。这与学习SOAP本身不同,因为PHP(像大多数其他语言一样)将SOAP的混乱XML位抽象出来,并将其变成一个易于使用的对象。

无论如何,这就是理论。

在PHP上有两种常用的SOAP工具包。一个叫做NuSOAP。这很有效,但不再处于积极的开发阶段(它是在PHP提供自己的内置SOAP类之前编写的)。 如果你想使用的NuSOAP,这里是官方项目网站:http://nusoap.sourceforge.net/

如果你使用PHP5.2或5.3(你是应该的,因为他们是目前唯一支持的版本),那么你将有一个内置的SOAP类。 如果你想使用的PHP官方SOAP类,这里的手册页:http://php.net/manual/en/book.soap.php

一旦你选择你要使用的SOAP类,你需要知道一点,一般SOAP Web服务,以及您想要使用的特定服务。

首先,您需要知道服务是否提供WSDL。 WSDL是定义SOAP服务上可用的方法和参数的另一个XML文档。这允许您的SOAP类为SOAP服务定义一个类,这使得您作为程序员更容易。在PHP中的实践中,它并没有真正做出多大的区别。

我也推荐你下载SOAP UI,这是一个SOAP服务的调试工具。它允许您查看和修改发送和接收的确切XML代码。它可以帮助你学习和理解SOAP的工作原理,并且如果你的PHP代码不能按预期工作,还可以帮助你进行调试。

[编辑] 显然最重要的是要知道你正在使用的API。

如果您正在处理的服务具有WSDL,那么当您创建对象时,PHP将自动为您生成适当的方法。例如:

$client = new SoapClient("http://somedomain/stockquote.wsdl"); 
print($client->getStockQuote("MSFT")); 

确实如此简单。当然,这是一个相当简单的例子。大多数SOAP服务(当然是我用过的!)需要比这个更多的参数,并且他们通常以巨大的嵌套数组结构的形式。

如果您的服务没有WSDL,你必须调用使用一个稍微不同的方式方法:

$client = new SoapClient(null, array('location' => "http://somedomain/stockquote.asp")); 
print($client->__soapCall('getStockQuote',"MSFT")); 

希望帮助您了解它好一点。

我仍然建议您使用SOAP UI,因为它可以帮助您更好地理解SOAP。您还应该明确阅读PHP SOAP类手册页:http://php.net/manual/en/book.soap.php - 文档非常全面,但所有这些东西都可能令人望而生畏,因为它只是一个参考,而不是教程。

+0

感谢您的帮助。我编辑了这篇文章,以显示我需要学习肥皂。我想与一个特定的api进行交互(尽管一般情况下学习会很好)根据我所知,这些服务从网站收到请求,并且看起来他们发送了一个xml/soap文件...我不知道真的不知道,我还是要弄清楚。 – Bill 2010-11-16 19:04:02

+1

@菲尔 - 我会在我的回答中加入一点,以帮助更多。 – Spudley 2010-11-16 19:34:34

+0

太棒了...感谢您的帮助! – Bill 2010-11-16 19:38:18

随着这里其他的答案,我发现我最好的学习如何使用SOAPUI了解到SOAP:

http://www.soapui.org/

这是一个用于调试你的soap接口的很棒的应用程序,并帮助我试图弄清楚我的PHP调用中发生了什么。