2012-12-18 17 views
17

C'è qualcosa di specifico che devo fare per far funzionare l'API in Magento?Magento API: adattatore webservice non valido specificato

sto visitando/api/soap/WSDL sulla mia installazione locale (1.7) e restituisce il seguente errore:?

Invalid webservice adapter specified. 

Tutto sembra abilitato nel sito, ma i cant trovare qualsiasi informazione su altri passi devo fare per far funzionare la api.

+2

/index.php/api/V2_soap?wsdl=1 Hai provato questo – chanz

+0

ok così questo funziona solo quando index.php è incluso nel URL. Perchè è questo? –

+0

index.php non è necessario, puoi provare anche in questo modo www.yourmagento.com/api/V2_soap?wsdl=1 – chanz

risposta

35

Ho risolto questo da .htaccess disattivando l'opzione MultiViews come questo:

da

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

a

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

Lavora per me, grazie! – azendh

+0

Risolve il problema, grazie! – Sven

+2

Questo genera un errore di apache 'O tutte le Opzioni devono iniziare con + o -, o nessuna Opzione può 'Quindi la sintassi corretta per sopra dovrebbe essere' Opzioni + Indici + FollowSymLinks -MultiViews' – Gihan

2

Esiste un approccio diverso se si desidera mantenere la compatibilità con le chiamate API precedenti. Per qualche motivo oscuro, il mio server Apache non analizza la stringa ^api/... durante l'analisi della riscrittura.

Ma è ancora possibile utilizzare http://www.somedomain.com/api/v2_soap?wsdl=1 senza modificare il codice PHP Magento. Hai solo bisogno di cambiare il .htaccess come la seguente:

Sostituire in .htaccess:

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

da

RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L] (vedere la^api.php/al posto di^api /)

E ancora meglio se alcuni di voi hanno http://www.somedomain.com/api/V2_soap?wsdl=1 (V2_soap è maiuscolo), sarà necessario aggiungere un RewriteMap per utilizzare la funzione apache interna per impostare in minuscolo il parametro. Aggiungi al tuo host virtuale del RewriteMap:

RewriteMap lc int:tolower

E nel .htaccess

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

questo imposterà in minuscolo il parametro per lo script api.php e anche accettare 'V2_soap' nell'espressione regolare

Questa ultima parte è stata portata da @dreeves in this answer

0

Ho risolto questo modificando nel mio file host virtuale (/etc/apache2/sites-available/mag.dev.conf) come this:

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

ora sta caricando la risposta xml.

il platfrom è Ubuntu 12.04

Problemi correlati