Magento api: указан неверный адаптер webservice
Есть ли что-то конкретное, что мне нужно сделать, чтобы получить api в magento?
Я посещаю /api/soap/? wsdl на моей локальной установке (1.7) и возвращает следующую ошибку:
Invalid webservice adapter specified.
Все выглядит на сайте, но я не могу найти информацию о других шагах, которые мне нужно сделать, чтобы заставить api работать.
Ответы
Ответ 1
Я решил это из htaccess, отключив параметр MultiViews следующим образом:
от
<Directory /var/www/magento>
Options Indexes FollowSymLinks MultiViews
</Directory>
to
<Directory /var/www/magento>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Ответ 2
Существует другой подход, если вы хотите поддерживать совместимость со старыми вызовами API. По какой-то непонятной причине мой сервер Apache не анализирует строку ^api/...
во время разбора перезаписи.
Но вы все равно можете использовать http://www.somedomain.com/api/v2_soap?wsdl=1
без изменения кода Magento PHP. Вам просто нужно изменить .htaccess следующим образом:
Заменить в .htaccess:
RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
по
RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L]
(см. ^ api.php/вместо ^ api/)
И даже лучше, если некоторые из вас имеют http://www.somedomain.com/api/v2_soap?wsdl=1
(V2_soap в верхнем регистре), вам нужно будет добавить RewriteMap
, чтобы использовать внутреннюю функцию apache для установки в нижнем регистре параметра. Добавьте на свой виртуальный хост RewriteMap:
RewriteMap lc int:tolower
И в .htaccess
RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]
Это приведет к тому, что будет указан нижний регистр для параметра api.php script, а также принять 'V2_soap' в регулярном выражении
Эта последняя часть была представлена @dreeves в этом ответе
Ответ 3
Я решил это путем редактирования в моем файле виртуального хоста (/etc/apache2/sites-available/mag.dev.conf)
следующим образом:
<Directory /var/www/mag/mag>
Options +Indexes +FollowSymLinks -MultiViews
.....
</Directory>
теперь загружает xml-ответ.
platfrom is ubuntu 12.04