我正在WS-I兼容模式中使用Magento v2 web服务
当尝试列出产品时,我得到了异常
SOAP-ERROR: Encoding: object has no 'sessionId' property
我的代码列在下面
$proxy = new SoapClient('http://127.0.0.1/Magento1620/index.php/api/v2_soap?wsdl', array('trace' => 1, 'connection_timeout' => 120));
$sessionId = $proxy->login(array(
'username' => "zzc000",
'apiKey' => "zzc000"
));
$filters = array(
'sku' => array('like'=>'zol%')
);
$products = $proxy->catalogProductList($sessionId, $filters);
请帮忙,谢谢
在WS-I模式中,在使用API方面存在一些细微差异。
- $proxy->login()的结果是一个对象。您需要提取sessionId
- 调用$proxy->catalogProductList()时,需要在关联数组中提供参数(就像使用$proxy->login()一样)
请尝试这个:
<?php
try {
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
$proxy = new SoapClient('http://127.0.0.1/Magento1620/index.php/api/v2_soap?wsdl', array('trace' => 1, 'connection_timeout' => 120));
$session = $proxy->login(array(
'username' => "zzc000",
'apiKey' => "zzc000"
));
$sessionId = $session->result;
$filters = array(
'sku' => array('like'=>'zol%')
);
$products = $proxy->catalogProductList(array("sessionId" => $sessionId, "filters" => $filters));
echo '<h1>Result</h1>';
echo '<pre>';
var_dump($products);
echo '</pre>';
} catch (Exception $e) {
echo '<h1>Error</h1>';
echo '<p>' . $e->getMessage() . '</p>';
}
这同样适用于对符合WS-I的v2 SOAP API的其他方法调用。