Magento的API调用用于获取产品信息
我用下面的代码从我的本地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
貌似都没有被加载WSDL XML文件。要进行调试,请尝试在浏览器中打开该文件。 我想它不会被加载,你会得到一个错误(这将帮助你找出有什么问题),否则你会被要求输入用户名和密码(基本HTTP认证)。在第二种情况下,尝试你的URL从C:\windows\system32\drivers\etc
改变从http://domain.com/magento/index.php/api/soap/?wsdl
到http://user:[email protected]/magento/index.php/api/soap/?wsdl
打开“hosts”文件,并注释掉::1
(是这样的:# ::1
)或完全删除行,然后保存文件。
我也使用过这项服务 - http://localhost:81/magento/index.php/api/soap/?wsdl它适用于我。
SoapClient无法检索wsdl定义文件,这意味着路由配置不正确或出现一些外部错误。但最有可能的是它是一个路由问题。 api/[type]重写规则在.htaccess中注释,因此您需要直接删除#号或使用api.php。要使api.php直接工作,您需要将类型参数传递给api.php以指定您想要使用的API协议。
例如,对于SOAP,它将是 - http://domain.com/magento/api.php?type=soap&wsdl。你也可以使用'soap_v2'。
尝试使用浏览器转到WSDL网址。你得到了什么?也许尝试从它删除index.php。 – ben 2011-06-10 15:01:03
当我使用下面的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
您发布的代码与您刚刚测试的URL不同。您的代码是否使用包含“shoponline”或“magento”的网址? – ben 2011-06-10 15:54:16