单独学习 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 是另一个 XML 文档,它定义了 SOAP 服务上可用的方法和参数。这允许您的 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 - 文档非常详尽,尽管对于所有这些内容,起初可能会令人生畏,因为它是参考,而不是教程。