【问题标题】:Magento, SoapClient, and local WSDLMagento、SoapClient 和本地 WSDL
【发布时间】:2012-01-10 22:55:47
【问题描述】:

这可能是一个新手面对手掌的问题,但我无法弄清楚。我正在使用来自 Magento 商店的 Web 服务(即 Magento 商店中的代码正在访问远程 Web 服务)。在这种情况下发生了这种情况,我有一个需要引用的本地 WSDL 文件。在使用 WSDL 文件的远程 URL 之前,我已经完成了这项工作,并且效果很好。但是,对于本地文件,我不知道如何引用它。我通过将文件放在站点根目录的 wsdl 子目录中使其工作,然后我可以使用 http://mysite/wsdl/thefile.wsdl 引用它.但是,我更喜欢使用相对路径来引用它(主要是因为我计划将相同的代码部署到不同的站点,并且我希望对所有站点都使用相同的代码)。

我想我的问题归结为:当您像 $client = new SoapClient("thefile.wsdl") 这样实例化 PHP 的 SoapClient 实例时,它在哪里寻找 thefile.wsdl?我认为它将是实例化 SoapClient 的 PHP 文件的本地文件,但是当我将文件放在同一个文件夹中时它不起作用。我尝试了 /includes 目录以及 app/code/local

我敢肯定,对于经验丰富的程序员来说,这毫无疑问,但有时基础知识会暗示我...

【问题讨论】:

    标签: php magento soap


    【解决方案1】:

    谜团解开了!这对大多数人来说可能很明显,但我必须学习它,所以也许其他人也会从中受益。

    我没有意识到,由于 Magento 的设计,所有页面的“根”是 /index.php。每个页面都是从那里加载的,所以当然它是根。当您尝试实例化 SoapClient 时,它会查看 主根 脚本文件的目录,而不是当前的模块/类文件。我可以将 WSDL 文件放在网络服务器的根目录中并成功加载它们(我想我之前没有尝试过……)。

    我现在所做的是将它们移动到 /media 目录,然后通过使用 getBaseDir('media') 获取媒体目录、添加子目录路径和 VIOLA 来调用它们!

    【讨论】:

      【解决方案2】:

      我不是 SOAP 专家,但你的问题没有意义。 Soap 是一种通过 HTTP 进行远程方法调用的协议。 WSDL 文件是客户端从远程服务器请求的文件,用于询问哪些方法可用以及如何调用以及应该如何调用它们。 “本地 WSDL 文件”没有意义。

      【讨论】:

      • 有时 WSDL 文件分发给集成商,而不是托管在服务的服务器上。就个人而言,我认为这是愚蠢的,但它已经完成了。在这种情况下,它用于服务的开发版本...我认为生产服务器承载 WSDL。无论如何,它让我难住了......
      【解决方案3】:

      如果您的问题是关于 magento,那么您应该创建模块。创建 wsdl.xml(以查看目录的模块 wsdl.xml 和 api.xml 文件为例)。

      更多关于magento soap apihere

      更新 1

      如果服务在另一台主机上,那么您应该能够以与 magento 服务消费相同的方式消费。

      看看这个link关于zend的调频

      【讨论】:

      • 谢谢,但我认为您误解了。我对连接到我的 Magento 商店不感兴趣,我有兴趣从我的 Magento 商店连接到远程 Web 服务。我创建了一个模块来执行发出请求和处理响应的所有逻辑,但问题是他们发送给我的 WSDL 放在哪里以及在实例化 SoapClient 时如何引用。
      【解决方案4】:

      您需要使用 Magento 的内置函数来生成本地文件路径。将 WSDL 存储在媒体目录中可能不明智,因为这是可公开访问的(这可能是 WSDL 未远程托管@AlanStorm 的原因)。

      我建议您将文件存储在自定义模块的etc 目录中。示例代码:

      $vWsdlPath = Mage::getModuleDir('etc', 'YourModule_NameHere').'/wsdl/SomeFile.wsdl';
      $soap = new Zend_Soap_Client($vWsdlPath, $aOptions);
      

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 2016-03-02
        • 2012-06-30
        • 1970-01-01
        • 2012-09-07
        • 2014-09-14
        • 1970-01-01
        相关资源
        最近更新 更多