如何使用Pear SOAP_Client进行身份验证

时间:2011-06-22 19:01:52

标签: php soap magento pear

我正尝试从未启用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)

1 个答案:

答案 0 :(得分:1)

所以我想出来了,这里有几个因素。

  1. SoapClient没有登录功能,我调用的登录是WSDL中定义的调用

  2. 在WSDL中未定义各种magento API方法,您为WSDL定义为call的方法提供了一个参数资源方法。这造成了一些混乱,因为使用$client->call()似乎调用SOAP_Client类定义的call,所以我需要使用$client->call('call')来调用SOAP方法call

  3. 最终的代码最终成为:

    $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
        )
    );