Error de SOAP: al analizar WSDL: no se pudo cargar desde "" no se pudo cargar la entidad externa

9

ingrese la descripción de la imagen aquí

Estamos desarrollando una aplicación de Android para un sitio magento. Tenemos que pasar SOAP API de magento a android para obtener la identificación de la sesión.

Creamos roles y usuarios web SOAP en el panel de administración de magento siguiendo este enlace:

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

Cuando intentamos conectarnos desde Android a Magento, recibimos un error. Este es el enlace que estamos usando:

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

Bebé en magento
fuente
1
Hola: no puedo ver el error en el enlace que proporcionó; dice abajo por mantenimiento.
Garet Claborn
hola, lo siento, el sitio está en mantenimiento, por favor revise la pregunta actualizada.
Bebé en Magento
1
¿Intentaste los pasos de mi pregunta anterior? Esto se parece al mismo error que obtuve que fue causado por el firewall y la configuración de NAT para mi servidor.
Garet Claborn
1
Cuando magento intenta obtener algunos recursos, realiza más solicitudes SOAP para sí mismo, pero en lugar de usar localhost como debería, intentará llegar hasta la IP externa y el nombre de host. En mi caso, tuve que abrir el cortafuegos en bucles y agregar mi dominio e IP externa al archivo de hosts
Garet Claborn
Está bien @GaretClaborn lo consultaré con el equipo del servidor.
Bebé en Magento

Respuestas:

5

El servidor SOAP debe inicializarse con WSDL para comprender cómo procesar las solicitudes entrantes (básicamente carga WSDL desde la URL especificada en el caso de Magento). Esto sucede en \Mage_Api_Model_Server_Adapter_Soap::_instantiateServer():

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

Tenga en cuenta que getWsdlUrl()construye la URL WSDL basada en la URL base de su instancia de Magento. Esto significa que si su tienda Magento no es accesible desde el host donde se implementa, el servidor SOAP no podrá cargar WSDL durante la inicialización. Como resultado, se encontrará con dicho error al intentar realizar solicitudes a la API de SOAP de Magento.

Alex Paliarush
fuente
¿Y cómo podemos solucionar esto?
Alexandros
Agregue el host de instancia de Magento /etc/hostsen el servidor.
Alex Paliarush
Agregué mi IP XXX.XXX.XXX.XXX www.example.com pero todavía obtengo lo mismo. También traté de reducir y hacer ping al dominio completo y funcionan :(
Alexandros
¿Se puede cargar WSDL mientras está en ese servidor?
Alex Paliarush el
1
No estoy seguro de que, intente depurar en algún lugar alrededor\Mage_Api_Model_Server_Adapter_Soap::_instantiateServer()
Alex Paliarush
2

Estaba experimentando el mismo problema. Instalé el puente de orocrm que necesita acceder a la API de jabón, seguí los pasos dados para configurar una función de jabón y un usuario y luego intenté conectarme: 💥 ¡Los parámetros no son válidos!

Después de excavar en los registros, noté este error:

[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   [] []

Descubrí por qué experimenté este problema. En realidad, esto no estaba relacionado con orocrm sino con magento. Ese fue un problema de firewall. En realidad, agregué correctamente las reglas para permitir que el servidor crm ataque la api de magento, ¡pero esta debe llegar a sí misma! Entonces, después de algunos dolores de cabeza, solo agrego una regla en el firewall del servidor magento para permitirse (el servidor magento) alcanzar su propia API (tipo de búsqueda externa) ...

De todos modos, espero que esto le ahorre algunas horas a alguien

lenybernard
fuente
1
gracias por la respuesta, es muy difícil encontrar una solución para estas preguntas relacionadas con el jabón, sé el dolor ......
Bebé en Magento