2012-03-02 129 views
1

我必须安装在本地计算机上的Magento 1.6.1 I \ 'M尝试连接magetno \' 使用PHP中的API下面的代码的Magento的API访问,而无需使用互联网连接

$proxy = new SoapClient('http://localhost/magento/api/v2_soap/?wsdl'); 
$sessionId = $proxy->login('apiuser', 'apikey'); 

我可以连接使用此代码如果互联网连接,如果我把它关闭它不起作用。 它给了以下错误

Warning: SoapClient::SoapClient() [soapclient.soapclient]: php_network_getaddresses: getaddrinfo failed: No such host is known. in E:\wamp\www\magentomanager\api\products.php on line 12 

Warning: SoapClient::SoapClient(http://schemas.xmlsoap.org/soap/encoding/) [soapclient.soapclient]: failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known. in E:\wamp\www\magentomanager\api\products.php on line 12 

请让我知道什么是背后的原因? 为什么magento需要访问本地API的Internet连接。如何在没有互联网连接的情况下访问api?

回答

2

Magento的API基于SOAP,正如您可能已经发现的那样。 SOAP基于XML,并为此使用模式文件,该模式文件描述SOAP服务的调用的模式/布局。所以这个文件可能会在每个SOAP调用之前/之前加载。

但是,workaorund可以将模式描述存储在本地计算机上,并编辑Magento的wsdl.xml文件,以便它们将引用到本地计算机。只需在您的Magento安装中搜索所有xml文件中的URL。

不是一个很好的解决方法,但嘿,...这是一个解决方法。

+0

谢谢你的回答,但改变magento的代码是一个痛苦,它分布在这么多的文件,恐怕如果我改变它可能会在其他部分中断的东西,我甚至尝试创建此网址的虚拟主机http: //schemas.xmlsoap.org/soap/encoding/ api要求查找并返回所需的xml。但它对我也没有帮助 – 2012-03-02 19:52:09

0

我认为问题是本地主机无法解析到您的本地IP或127.0.0.1。您可以将其添加到您的主机文件中,或通过http:///调用它,而不是http://localhost

+0

是的,通过使用hosts文件将127.0.0.1指向schemas.xmlsoap.org),确实可以从本地Web服务器提供这些文件。 – demonkoryu 2012-06-21 15:07:17