Magento api:指定的 Web 服务适配器无效

2022-08-30 21:55:51

我需要做些什么来让magento中的api工作吗?

我正在本地安装 (1.7) 上访问 /api/soap/?wsdl,它返回以下错误:

Invalid webservice adapter specified.

一切看起来都在网站中启用,但我找不到任何关于我需要做的其他步骤的信息,以使api正常工作。


答案 1

我已经通过关闭MultiViews选项解决了这个问题,如下所示:

<Directory /var/www/magento>
            Options Indexes FollowSymLinks MultiViews
</Directory>

<Directory /var/www/magento>
            Options +Indexes +FollowSymLinks -MultiViews
</Directory>

答案 2

如果要保持与旧 API 调用的兼容性,则有不同的方法。由于一些不起眼的原因,我的Apache服务器在重写解析期间不会分析字符串。^api/...

但是您仍然可以在不更改Magento PHP代码的情况下使用。您只需要更改 .htaccess,如下所示:http://www.somedomain.com/api/v2_soap?wsdl=1

替换为 .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/)

如果你们中的一些人有(V2_soap是大写的),你将不得不添加一个使用内部apache函数来设置小写的参数,那就更好了。将 RewriteMap 添加到您的虚拟主机:http://www.somedomain.com/api/V2_soap?wsdl=1RewriteMap

RewriteMap lc int:tolower

在.htaccess中

RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]

这将设置为 api.php 脚本的参数小写,并在正则表达式中接受“V2_soap”

最后一部分是由@dreeves在这个答案中带来的


推荐