【发布时间】:2011-12-28 17:50:15
【问题描述】:
我确定这是一个愚蠢的新手问题,但这是我第一次使用 SOAP,所以我想我有资格。我有一段时间试图从我的 PHP 类中加载本地 WSDL 文件。我不明白它在哪里寻找文件或如何在本地引用它。我可以使用完整的网站 url 放置绝对路径,但这似乎有点过头了,它只能在这个网站上工作。我更喜欢使用相对路径来引用文件。
我正在使用 PHP 和 Magento 商店。处理与 SOAP 服务器通信的类是 Namespace_Module_Model_Carrier_Fedex_Addressvalidation,它位于 app/code/local/Namespace/Module/Model/Carrier/Fedex/Addressvalidation.php。此类的一个实例使用Mage::getModel('shippingrates/carrier_fedex_addressvalidation') 来自Namespace_Module_Model_Carrier_Fedex 类中的实例化。 WSDL 位置定义在地址验证类的顶部:
protected $_wsdl = 'AddressValidationService_v2.wsdl';
在模型的构造函数中,我初始化了 SoapClient:
$this->_client = new SoapClient($this->_wsdl);
$this->_client->__setLocation($this->getServiceLocation());//returns a remote URL for their test server
该文件与 Addressvalidation.php 文件位于同一目录中,但我也尝试将其与 Fedex.php 脚本位于同一目录中以及在 app/code/local/ 但没有任何效果。我尝试将 WSDL 变量设置为 ./AddressValidationService_v2.wsdl 以及其他各种选项,但我总是遇到这样的异常:
Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from './AddressValidationService_v2.wsdl' : failed to load external entity
如果有人可以帮助我了解 SoapClient 查找文件的范围和位置,我想我会更好地了解将它们放在哪里以及如何引用它们。
【问题讨论】:
标签: php magento soap magento-1.5 soap-client