Призыв Magento API для получения информации о продуктах - PullRequest
3 голосов
/ 10 июня 2011

Я использовал приведенный ниже код, чтобы получить информацию о товарах из магазина magento с моего локального хоста

$proxy = new SoapClient('http://domain.com/magento/index.php/api/soap/?wsdl');

$sessionId = $proxy->login('username', 'apikey');
$filters = array(
    'sku' => array('like'=>'test%')
);

$products = $proxy->call($sessionId, 'product.list', array($filters));

var_dump($products);

Он работает на моей локальной машине, но не на сервере. Но настройка сервера включена на сервере. Ниже приведено сообщение об ошибке

" SOAP-ERROR: синтаксический анализ WSDL: невозможно найти в "

Я получил соответствующий XML-файл, когда использовал следующий URL http://domainname/shoponline/index.php/api/soap/?wsdl

Я удалил index.php, но не получил никакого результата.

$proxy = new SoapClient('http://domain.com/magento/index.php/api/soap/?wsdl');

Приведенное выше утверждение отображает приведенную ниже ошибку

Parsing WSDL: Couldn't find definitions in

Ответы [ 4 ]

2 голосов
/ 21 июля 2015

Убедитесь, что вы отключили режим разработчика и отчеты об ошибках в index.php.

2 голосов
/ 03 августа 2011

Похоже, что файл WSDL XML не был загружен вообще.Для отладки попробуйте открыть этот файл в браузере.Я предполагаю, что он не будет загружен вообще, и вы получите ошибку (которая поможет вам выяснить, что не так), или вас попросят ввести имя пользователя и пароль (базовая аутентификация HTTP).Во втором случае попробуйте изменить ваш URL с http://domain.com/magento/index.php/api/soap/?wsdl на http://user:pass@domain.com/magento/index.php/api/soap/?wsdl

0 голосов
/ 11 ноября 2013

SoapClient не может получить файл определения wsdl, что означает, что маршрутизация настроена неправильно или возникла внешняя ошибка.Но, скорее всего, это проблема маршрутизации.Правило перезаписи api / [type] прокомментировано в .htaccess, поэтому вам нужно удалить знак # или напрямую использовать api.php.Чтобы заставить api.php работать напрямую, вам нужно передать параметр type в api.php, чтобы указать, какой протокол API вы хотите использовать.

Например, для SOAP это будет - http://domain.com/magento/api.php?type=soap&wsdl. Вы также можете использовать 'soap_v2'.

0 голосов
/ 08 мая 2012

Откройте файл "hosts" из C:\windows\system32\drivers\etc и закомментируйте строку ::1 (например: # ::1) или удалите строку целиком, затем сохраните файл.

Я также использовал этот сервис - http://localhost:81/magento/index.php/api/soap/?wsdl, и он работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...