Magento API product_media.create не работает с PEAR SOAP - PullRequest
1 голос
/ 24 июня 2011

Я пытаюсь добавить изображение к продукту, используя SOAP API от magento, и могу успешно загрузить его, используя стандарт SoapClient, но мне не удается, если я использую Pear SOAP_Client

Вот что яя делаю с SoapClient:

$image_data = array(
        'file' => array(
           'name' => 'test_image_name',
           'content' => $content,
           'mime'    => 'image/jpeg'
       ),
        'label'    => 'test_image_label',
        'position' => 1,
        'types'    => '',
        'exclude'  => 0
    );
$client = new SoapClient($wsdl_url);
$session_id = $client->login($mg_user, $mg_key);
$magento_filename = $client->call($session_id, 'product_media.create', array(
            $sku,
            $image_data
    ));

И это успешно добавит изображение к продукту.

Но если я использую SOAP_Client:

$client = new SOAP_Client($wsdl_url, true);
$session_id = $client->call(
    'login',
    array(
        'username'=>$mg_user,
        'apiKey'=> $mg_key
    )
);
$magento_filename = $client->call(
    'call',
    array(
        'sessionId'=>$session_id,
        'resourcePath'=>'product_media.create',
        'args'=>array(
            $sku,
            $image_data,
        )
    )
);

Я получаю SOAPFault: «Не могу использовать объект типа stdClass в качестве массива»

Но я могу вызвать catalog_product.info:

$info = $client->call(
    'call',
    array(
        'sessionId'=>$session_id,
        'resourcePath'=>'catalog_product.info',
        'args'=>array($sku)
    )
);

, и он возвращает все правильные данные безошибки.

Что может быть причиной разницы?

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Не используйте пакет SOAP от PEAR. Он устарел и использовался до появления PHP SoapClient.

0 голосов
/ 24 июня 2011

Моим решением, которое на самом деле вообще не является решением, было переконфигурировать и переустановить php с --enable-soap.

Но это может быть нереально для других, у которых проблема в зависимости от сценариев их хостинга.

...