Когда я попытался вызвать свой локальный Magento 1.9 с помощью веб-сервиса, используя следующий код, кажется, что он дает мне ошибку «Отказано в доступе».
У меня не было проблем с использованием SOAPUI (или другого мыльного клиента) для вызова по тому же адресу.
Код PHP
<?php
$client = new SoapClient('http://localhost/magento/index.php/api/soap/?wsdl', array('trace' => 1));
$session = $client->login('apiuser', 'apikey');
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
?>
Реагировать:
$ php -f catalog_product_list.php
PHP Fatal error: Uncaught SoapFault exception: [2] Access denied. in /catalog_product_list.php:5
Stack trace:
#0 /catalog_product_list.php(5): SoapClient->__call('login', Array)
#1 /catalog_product_list.php(5): SoapClient->login('apiuser', 'apikey')
#2 {main}
thrown in /catalog_product_list.php on line 4
Я использовал тот же код для вызова удаленной копии, и это нормально. В чем может быть проблема?
Это звучит как проблема с CORS. (Межсайтовый скриптинг в ресурсах). Рассмотрите Googling CORS и ваш конкретный стек разработки.
предыдущий я использовал этот адрес. либо php или soapui работает.
HTTP: //localhost/magento/index.php/api/ WSDL
теперь я использую этот адрес в моем мыло и php. оба работают сейчас.
HTTP: //localhost/magento/index.php/api/soap/ WSDL
Решение состоит в том, чтобы
1. создайте новые роли SOAP / XML-RPX, скажем «Тест»
2. в разделе «Ролевые ресурсы» просто выберите «Все» для доступа к ресурсам (только для тестирования).
3. Отредактируйте пользователя и назначьте Роль на «Тест»