我正尝试从未启用SoapClient的服务器登录我的magento的Web服务。所以我想我会安装并使用Pear的SOAP_Client,但我无法弄清楚如何登录。
使用SoapClient:
$client = new SoapClient($WSDL);
$session = $client->login($user, $api_key);
$response = $client->call($session, $method, $arguments);
但我无法找到SOAP_Client的login
方法的模拟
我认为我应该在构造函数的$ proxy_params中设置一些东西,但我找不到索引应该是什么。
$proxy_params = array();
$client = new SOAP_Client($wsdl, true, false, $proxy_params);
$client->call($method, $arguments)
答案 0 :(得分:1)
所以我想出来了,这里有几个因素。
SoapClient没有登录功能,我调用的登录是WSDL中定义的调用
在WSDL中未定义各种magento API方法,您为WSDL定义为call
的方法提供了一个参数资源方法。这造成了一些混乱,因为使用$client->call()
似乎调用SOAP_Client类定义的call
,所以我需要使用$client->call('call')
来调用SOAP方法call
最终的代码最终成为:
$method = 'catalog_product.info';
$args = array($product_id);
$client = new SOAP_Client($wsdl, true);
$session_id = $client->call(
'login',
array(
'username'=>$username,
'apiKey'=> $pasword
)
);
$ret = $client->call(
'call',
array(
'sessionId'=>$session_id,
'resourcePath'=>$method,
'args'=>$args
)
);