2011-06-10 102 views
3

我用下面的代碼從我的本地Magento的API調用用於獲取產品信息

$proxy = new SoapClient('http://domain.com/magento/index.php/api/soap/?wsdl'); 

$sessionId = $proxy->login('username', 'apikey'); 
$filters = array(
    'sku' => array('like'=>'test%') 
); 

$products = $proxy->call($sessionId, 'product.list', array($filters)); 

var_dump($products); 

它的工作我的本地計算機上,但不能在服務器從Magento的商店產品的詳細信息。但是肥皂配置在服務器中啓用。下面是錯誤消息

SOAP-ERROR:解析WSDL:找不到<定義>在

我得到了相應的XML文件時,我用下面的URL http://domainname/shoponline/index.php/api/soap/?wsdl

我刪除index.php但沒有得到任何結果。

$proxy = new SoapClient('http://domain.com/magento/index.php/api/soap/?wsdl'); 

上面的語句顯示下面的錯誤

Parsing WSDL: Couldn't find definitions in 
+0

嘗試使用瀏覽器轉到WSDL網址。你得到了什麼?也許嘗試從它刪除index.php。 – ben 2011-06-10 15:01:03

+0

當我使用下面的url獲得對應的xml文件http://domainname/shoponline/index.php/api/soap/?wsdl 我刪除了index.php,但沒有得到任何結果。 $ proxy = new SoapClient('http://domain.com/magento/index.php/api/soap/?wsdl');上述語句顯示以下錯誤解析WSDL:「SOAP-ERROR:解析WSDL:找不到 in」 – shylaja 2011-06-10 15:50:01

+0

您發佈的代碼與您剛剛測試的URL不同。您的代碼是否使用包含「shoponline」或「magento」的網址? – ben 2011-06-10 15:54:16

回答

2

貌似都沒有被加載WSDL XML文件。要進行調試,請嘗試在瀏覽器中打開該文件。 我想它不會被加載,你會得到一個錯誤(這將幫助你找出有什麼問題),否則你會被要求輸入用戶名和密碼(基本HTTP認證)。在第二種情況下,嘗試你的URL從C:\windows\system32\drivers\etc改變從http://domain.com/magento/index.php/api/soap/?wsdlhttp://user:[email protected]/magento/index.php/api/soap/?wsdl

0

SoapClient無法檢索wsdl定義文件,這意味着路由配置不正確或出現一些外部錯誤。但最有可能的是它是一個路由問題。 api/[type]重寫規則在.htaccess中註釋,因此您需要直接刪除#號或使用api.php。要使api.php直接工作,您需要將類型參數傳遞給api.php以指定您想要使用的API協議。

例如,對於SOAP,它將是 - http://domain.com/magento/api.php?type=soap&wsdl。你也可以使用'soap_v2'。

2

確保您禁用了index.php中的開發人員模式和錯誤報告。

+0

謝謝,我正在摸索我的頭一陣子,這爲我解決了這個問題。 – codekipple 2016-08-17 15:51:38

相關問題