我正试图使用magento的SOAP api将图像添加到产品中,我可以使用标准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)
)
);
并且返回没有错误的所有正确数据。
是什么导致了这种差异?
我的解决方案实际上根本不是解决方案,而是用--enable-soap
重新配置和安装php。
但对于其他有问题的人来说,这可能不是一个可行的解决方案,这取决于他们的托管场景。
不要使用PEAR的SOAP包。它已经过时了,在PHP SoapClient出现之前就已经使用过了。