18

我需要做些什么才能让 magento 中的 api 正常工作吗?

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

Invalid webservice adapter specified.

网站中的所有内容看起来都已启用,但我找不到任何有关使 api 正常工作所需执行的其他步骤的信息。

4

3 回答 3

37

我已经通过关闭这样的 MultiViews 选项从 htaccess 解决了这个问题:

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

<Directory /var/www/magento>
            Options +Indexes +FollowSymLinks -MultiViews
</Directory>
于 2013-06-10T11:42:55.817 回答
2

如果您想保持与旧 API 调用的兼容性,可以使用不同的方法。^api/...由于某种不明原因,我的 Apache 服务器在重写解析期间没有分析字符串。

但是您仍然可以在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 脚本的参数,并在正则表达式中接受“V2_soap”

最后一部分由@dreeves 在这个答案中提出

于 2013-04-09T08:46:30.397 回答
-1

我通过编辑我的虚拟主机文件来解决这个问题,(/etc/apache2/sites-available/mag.dev.conf)如下所示:

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

现在它正在加载 xml 响应。

平台是 ubuntu 12.04

于 2014-04-17T07:17:21.797 回答