Errore SOAP: analisi WSDL: impossibile caricare da “” impossibile caricare entità esterna


9

inserisci qui la descrizione dell'immagine

Stiamo sviluppando un'app Android per un sito magento. Dobbiamo passare l'API SOAP da Magento ad Android per ottenere l'ID sessione.

Abbiamo creato utenti e ruoli Web SOAP nel pannello di amministrazione di magento seguendo questo link:

https://www.yireo.com/tutorials/magebridge/administration/596-step-by-step-create-a-magento-api-user

Quando proviamo a connetterci da Android a Magento, riceviamo un errore. Questo è il link che stiamo usando:

http://videomergerapp.com/index.php/api/v2_soap/


1
Ciao - Non riesco a vedere l'errore sul link che hai fornito; dice giù per manutenzione.
Garet Claborn,

ciao, scusa se il sito è in manutenzione, controlla la domanda aggiornata.
Baby in Magento,

1
Hai provato i passaggi della mia domanda precedente? Questo sembra lo stesso errore che ho causato dal firewall e dalle impostazioni NAT per il mio server.
Garet Claborn,

1
Quando magento sta cercando di ottenere alcune risorse, invia più richieste SOAP a se stesso ma invece di utilizzare localhost come dovrebbe, dovrebbe tentare di andare fino all'IP esterno e al nome host. Nel mio caso ho dovuto aprire il firewall ai loopback e aggiungere il mio dominio e IP esterno al file hosts
Garet Claborn,

ok @GaretClaborn controllerò con il team del server.
Baby in Magento,

Risposte:


5

Il server SOAP deve essere inizializzato con WSDL per capire come elaborare le richieste in arrivo (fondamentalmente carica WSDL dall'URL specificato in caso di Magento). Questo succede in \Mage_Api_Model_Server_Adapter_Soap::_instantiateServer():

$this->_soap = new Zend_Soap_Server(
    $this->getWsdlUrl(array("wsdl" => 1)),
    array('encoding' => $apiConfigCharset)
);

Nota che getWsdlUrl()costruisce l'URL WSDL in base all'URL di base dell'istanza di Magento. Ciò significa che se il tuo negozio Magento non è accessibile dall'host in cui è distribuito, il server SOAP non sarà in grado di caricare WSDL durante l'inizializzazione. Di conseguenza, si verificherebbe tale errore quando si tenta di eseguire richieste all'API SOAP Magento.


E come possiamo risolvere questo?
Alexandros,

Aggiungi l'host dell'istanza Magento a /etc/hostssul server.
Alex Paliarush,

Ho aggiunto il mio IP XXX.XXX.XXX.XXX www.esempio.com ma ho ancora la stessa cosa. Ho anche provato a ridurre e eseguire il ping dell'intero dominio e funzionano :(
Alexandros,

Puoi caricare WSDL mentre sei su quel server?
Alex Paliarush,

1
Non sono sicuro, prova a eseguire il debug da qualche parte nei dintorni\Mage_Api_Model_Server_Adapter_Soap::_instantiateServer()
Alex Paliarush,

2

Stavo riscontrando lo stesso problema. Ho installato l'orocrm bridge che deve accedere all'api soap, ho seguito i passaggi indicati per configurare un ruolo soap e un utente e quindi ho provato a connettermi: 💥 I parametri non sono validi!

Dopo aver scavato nei registri, ho notato questo errore:

[2017-07-03 16:57:46] app.CRITICAL: MageCheck 
error: 0:  [message]           
SOAP-ERROR: Parsing WSDL: Couldn't load from 
'https://my.magento.store/index.php/api/v2_soap/index/?wsdl=1' : 
failed to load external entity 
"https://my.magento.store/index.php/api/v2_soap/index/?wsdl=1"

[request]
<?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <SOAP-ENV:Body>
            <ns1:login>
                <username xsi:type="xsd:string">orocrm</username>
                <apiKey xsi:type="xsd:string">***</apiKey>
            </ns1:login>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

[response]
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <SOAP-ENV:Fault>
            <faultcode>WSDL</faultcode>
            <faultstring>
SOAP-ERROR: Parsing WSDL: Couldn't load from  'https://my.magento.store/index.php/api/v2_soap/index/?wsdl=1' : 
failed to load external entity "https://my.magento.store/index.php/api/v2_soap/index/?wsdl=1"
            </faultstring>
        </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

[code]              500   [] []

Ho capito perché ho riscontrato questo problema. In realtà, questo non era legato all'orocrma ma al magento. Quello era un problema con il firewall. In realtà, ho aggiunto correttamente le regole per consentire al server crm di attaccare l'API di Magento ma questo deve raggiungere se stesso! Quindi, dopo alcuni mal di testa, aggiungo solo una regola sul firewall del server Magento per consentire a se stesso (il server Magento) di raggiungere la propria API (tipo di ricerca esterna) ...

Spero comunque che questo salverà alcune ore a qualcuno


1
grazie per la risposta, molto difficile ottenere una soluzione per queste domande relative al sapone, conosco il dolore ......
Baby in Magento,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.