2012-03-02 47 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