【问题标题】:How to learn SOAP? [closed]如何学习 SOAP? [关闭]
【发布时间】:2010-11-16 16:39:43
【问题描述】:

我创建了一个带有映射组件的 Web 应用程序。我想使用谷歌以外的其他地理编码服务,但我发现的所有服务都使用 SOAP 与网站通信。我以前从来没有用过肥皂。有谁知道任何好的资源来帮助我解决这个问题?我正在使用 PHP 集成来构建 Web 应用程序。

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

再次编辑:我基本上需要学习肥皂,这样我才能与http://www.nn4d.com/site/global/build/web_services/geocoding_reversegeocoding/map24geocoder51service/map24geocoder51service.jsp互动

【问题讨论】:

  • 使用 SOAP 库。我自己没有在 PHP 中使用过,但是很多使用我们的 Web 服务之一的人使用 NuSOAP sourceforge.net/projects/nusoap 它应该为您抽象出所有复杂的东西。

标签: php soap geocoding


【解决方案1】:

单独学习 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 - 文档非常详尽,尽管对于所有这些内容,起初可能会令人生畏,因为它是参考,而不是教程。

【讨论】:

  • 感谢您的帮助。我编辑了这篇文章,以展示我究竟需要学习什么肥皂。我想与特定的 api 交互(虽然一般来说学习会很好)据我所知,这些服务接收来自网站的请求,看起来它们发送了一个 xml/soap 文件......我不真的不知道,我还要弄清楚。
  • @Phil - 我会在我的回答中添加一些内容以提供更多帮助。
  • 太棒了...感谢您的帮助!
【解决方案2】:
【解决方案3】:

除了这里的其他答案,我发现我最好通过学习如何使用 SOAPUI 来学习 SOAP:

http://www.soapui.org/

这是一个用于调试您的肥皂界面的出色应用程序,并帮助我弄清楚我的 PHP 调用中发生了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多