2012-12-18 5 views
17

Gibt es etwas Spezifisches, was ich tun muss, um die API in Magento arbeiten zu lassen?Magento API: Ungültiger Webservice-Adapter angegeben

Ich besuche/api/Seife/wsdl auf meinem lokalen Installation (1.7) und es gibt die folgende Fehlermeldung:?

Invalid webservice adapter specified. 

Alles sieht auf der Website aktiviert, aber ich kann nicht alle Informationen über andere Schritte finden Ich muss tun, damit die API funktioniert.

+2

/index.php/api/V2_soap?wsdl=1 haben Sie diese – chanz

+0

versucht ok so ist dies nur funktioniert, wenn index.php in der URL enthalten ist. Warum ist das? –

+0

index.php ist nicht notwendig, können Sie auch so versuchen www.yourgagento.com/api/V2_soap?wsdl=1 – chanz

Antwort

35

Ich habe dies aus .htaccess gelöst durch Ausschalten Multiview Option wie folgt aus:

von

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

zu

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

Funktioniert für mich, danke! – azendh

+0

Behebt das Problem, danke! – Sven

+2

Dies wirft Apache-Fehler 'Entweder alle Optionen müssen mit + oder - beginnen, oder keine Option darf' Also die richtige Syntax für oben sollte 'Optionen + Indizes + FollowSymLinks -MultiViews ' – Gihan

2

Es gibt einen anderen Ansatz, wenn Sie die Kompatibilität mit alten API-Aufrufen beibehalten möchten. Aus irgendeinem obskuren Grund analysiert mein Apache-Server die Zeichenkette ^api/... während des Umschreibens nicht.

Sie können aber immer noch http://www.somedomain.com/api/v2_soap?wsdl=1 verwenden, ohne Magento PHP Code zu ändern. Sie müssen nur die .htaccess wie folgt ändern:

in .htaccess ersetzen:

RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]

von

RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L] (siehe^api.php/anstelle von^api /)

Und noch besser, wenn einige von Ihnen, haben http://www.somedomain.com/api/V2_soap?wsdl=1 (V2_soap ist Großbuchstaben), müssen Sie eine RewriteMap hinzufügen, um interne Apache-Funktion zu verwenden, um den Parameter in Kleinbuchstaben zu setzen. In den virtuellen Host die RewriteMap:

RewriteMap lc int:tolower

Und in der .htaccess

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

Dies wird den Parameter für die api.php Skript in Kleinbuchstaben und auch akzeptieren 'V2_soap' im regulären Ausdruck

Dieser letzte Teil von @dreeves in this answer

gebracht wurde
0

ich dieses Problem gelöst, indem die Bearbeitung in meiner virtuellen Host-Datei (/etc/apache2/sites-available/mag.dev.conf) wie dies:

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

lädt jetzt die XML-Antwort.

die platfrom ist ubuntu 12.04

Verwandte Themen