我无法使用 PHP 连接到 Magento SOAP API v2。出现的错误是:
PHP fatal error :未捕获的 SoapFault 异常:[WSDL] SOAP-ERROR:解析 WSDL:无法从“http://www.example.com/index.php/api/v2_soap/index/wsdl/1/ 加载” ' : 未能加载外部实体“http://www.example.com/index.php/api/v2_soap/index/wsdl/1/”
看起来,WSDL 正在加载,但它包含的外部 SOAP 文件没有。
PHP连接代码:
$client = new SoapClient('http://www.example.com/api/v2_soap?wsdl=1');
$session = $client->login('username', 'password');
从 v2_soap?wsdl=1 文件中截取:
<service name="MagentoService">
<port name="Mage_Api_Model_Server_V2_HandlerPort" binding="typens:Mage_Api_Model_Server_V2_HandlerBinding">
<soap:address location="http://www.example.com/index.php/api/v2_soap/index/"/>
</port>
</service>
Magento 版本是 1.5.1.0
。
最佳答案
此问题是由于服务器无法从本地计算机访问文件引起的。所以可能的原因可能是 DNS 服务器或/etc/hosts,但它实际上是一个 .htaccess 文件,它阻止了除我们的开发计算机之外的任何主机。这导致了 403 Forbidden 错误,进而导致 SOAP 错误等等..
关于php - 由于 "failed to load external entity"无法连接到 Magento SOAP API v2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454644/