Erro SOAP: A análise do WSDL: não foi possível carregar de "" falhou ao carregar a entidade externa


9

insira a descrição da imagem aqui

Estamos desenvolvendo um aplicativo Android para um site magento. Temos que passar a API SOAP do magento para o android para obter o ID da sessão.

Criamos usuário da web SOAP e funções no painel de administração do magento seguindo este link:

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

Quando tentamos conectar do android ao magento, estamos recebendo um erro. Este é o link que estamos usando:

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


11
Olá - Não consigo ver o erro no link que você forneceu; diz para manutenção.
Garet Claborn

oi, desculpe o site estar sob manutenção, verifique a pergunta atualizada.
Bebê em Magento

11
Você tentou as etapas da minha pergunta anterior? Parece o mesmo erro que recebi, causado pelas configurações de firewall e NAT do meu servidor.
Garet Claborn

11
Quando o magento está tentando obter alguns recursos, ele faz mais solicitações SOAP para si mesmo, mas em vez de usar o host local como deveria, tentará ir até o IP externo e o nome do host. No meu caso eu tive que abrir o firewall para loopbacks e adicionar o meu domínio e IP externo para o arquivo hosts
Garet Claborn

ok @GaretClaborn vou verificar com a equipe do servidor.
Bebê em Magento

Respostas:


5

O servidor SOAP precisa ser inicializado com o WSDL para entender como processar solicitações recebidas (basicamente carrega o WSDL a partir da URL especificada no caso do Magento). Isso acontece em \Mage_Api_Model_Server_Adapter_Soap::_instantiateServer():

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

Observe que getWsdlUrl()constrói o URL WSDL com base no URL base da instância do Magento. Isso significa que, se sua loja Magento não estiver acessível no host em que está implantada, o servidor SOAP não poderá carregar o WSDL durante a inicialização. Como resultado, você encontrará esse erro ao tentar executar solicitações à API SO Magento.


E como podemos consertar isso?
Alexandros

Adicione o host da instância Magento ao /etc/hostsservidor.
precisa saber é o seguinte

Adicionei meu IP XXX.XXX.XXX.XXX www.example.com, mas continuo recebendo a mesma coisa. Eu também tentei CURP e ping o domínio completo e eles trabalham :(
Alexandros

Você pode carregar o WSDL nesse servidor?
Alex Paliarush

11
Não tenho certeza do que, tente depurar em algum lugar ao redor\Mage_Api_Model_Server_Adapter_Soap::_instantiateServer()
Alex Paliarush

2

Eu estava enfrentando o mesmo problema. Instalei a ponte orocrm que precisa acessar a API do soap, segui as etapas fornecidas para configurar uma função e um usuário do soap e tentei conectar: ​​💥 Parâmetros inválidos!

Depois de cavar os logs, notei este erro:

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

Eu descobri por que tive esse problema. Na verdade, isso não estava relacionado ao orocrm, mas ao magento. Esse foi um problema de firewall. Na verdade, eu adicionei corretamente as regras para permitir que o servidor de CRM ataque a API do Magento, mas essa precisa se estender por si! Então, depois de algumas dores de cabeça, eu apenas adicionei uma regra no firewall do servidor magento para permitir que ele (o servidor magento) alcance sua própria API (tipo de pesquisa externa) ...

Enfim, espero que isso economize algumas horas para alguém


11
obrigado pela resposta, muito difícil obter solução para estas questões relacionadas com sabão, eu sei que a dor ......
Bebê em Magento
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.