Как пройти аутентификацию с помощью Pear SOAP_Client - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь войти в веб-службы моего magento с сервера, на котором не включен SoapClient. Поэтому я решил установить и использовать Pear * SOAP_Client , но не могу понять, как войти в систему.

С SoapClient я использую:

$client = new SoapClient($WSDL);
$session = $client->login($user, $api_key);
$response = $client->call($session, $method, $arguments);

Но я не могу найти аналог метода login для SOAP_Client

Я понял, что должен установить что-то в $ proxy_params конструктора, но не могу найти, какими должны быть индексы.

$proxy_params = array();
$client = new SOAP_Client($wsdl, true, false, $proxy_params);
$client->call($method, $arguments)

1 Ответ

1 голос
/ 23 июня 2011

Итак, я понял это, и здесь есть пара факторов.

  1. Для SoapClient нет функции входа в систему, вход в систему, который я вызывал, является вызовом, как определено в WSDL

  2. Различные методы API magento не определены в WSDL, вы предоставляете метод ресурса аргумента для метода, определенного WSDL как call. Это создало некоторую путаницу, потому что использование $client->call(), кажется, вызывает call, как определено классом SOAP_Client, поэтому мне нужно использовать $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
    )
);
...