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/

Bebê em Magento
fonte
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.

Alex Paliarush
fonte
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

lenybernard
fonte
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