Kesalahan SOAP: Parsing WSDL: Tidak dapat memuat dari "" gagal memuat entitas eksternal


9

masukkan deskripsi gambar di sini

Kami sedang mengembangkan aplikasi android untuk situs magento. Kita harus melewati SOAP API dari magento ke android untuk mendapatkan sesi id.

Kami menciptakan pengguna dan peran SOAP web di panel admin magento dengan mengikuti tautan ini:

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

Ketika kami mencoba menghubungkan dari Android ke Magento, kami mendapatkan kesalahan. Ini adalah tautan yang kami gunakan:

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


1
Halo - Saya tidak dapat melihat kesalahan di tautan yang Anda berikan; katanya turun untuk pemeliharaan.
Garet Claborn

hai, maaf situs itu dalam pemeliharaan, harap periksa pertanyaan yang diperbarui.
Baby in Magento

1
Apakah Anda mencoba langkah-langkah dari pertanyaan saya sebelumnya? Ini memang terlihat seperti kesalahan yang sama yang saya dapatkan yang disebabkan oleh pengaturan firewall dan NAT untuk server saya.
Garet Claborn

1
Ketika magento mencoba untuk mendapatkan beberapa sumber daya, ia membuat lebih banyak permintaan SOAP untuk dirinya sendiri, tetapi daripada menggunakan localhost seperti itu seharusnya akan mencoba untuk pergi jauh ke IP eksternal dan nama host. Dalam kasus saya, saya harus membuka firewall untuk loopback dan menambahkan domain dan IP eksternal ke file host
Garet Claborn

oke @ GaretClaborn saya akan memeriksa dengan tim server.
Baby in Magento

Jawaban:


5

Server SOAP perlu diinisialisasi dengan WSDL untuk memahami cara memproses permintaan yang masuk (pada dasarnya memuat WSDL dari URL yang ditentukan untuk Magento). Ini terjadi di \Mage_Api_Model_Server_Adapter_Soap::_instantiateServer():

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

Perhatikan bahwa getWsdlUrl()membuat URL WSDL berdasarkan pada URL basis instance Magento Anda. Ini berarti bahwa jika toko Magento Anda tidak dapat diakses dari host tempat penyebarannya, server SOAP tidak akan dapat memuat WSDL selama inisialisasi. Akibatnya, Anda akan mengalami kesalahan seperti itu ketika mencoba melakukan permintaan ke Magento SOAP API.


Dan bagaimana kita bisa memperbaikinya?
Alexandros

Tambahkan host instance Magento /etc/hostsdi server.
Alex Paliarush

Saya memang menambahkan IP saya XXX.XXX.XXX.XXX www.example.com tetapi saya masih mendapatkan hal yang sama. Saya juga mencoba untuk merayap dan ping domain lengkap dan mereka bekerja :(
Alexandros

Bisakah Anda memuat WSDL saat berada di server itu?
Alex Paliarush

1
Tidak yakin, coba debug di suatu tempat sekitar\Mage_Api_Model_Server_Adapter_Soap::_instantiateServer()
Alex Paliarush

2

Saya mengalami masalah yang sama. Saya memang menginstal jembatan orocrm yang perlu mengakses api sabun, mengikuti langkah-langkah yang diberikan untuk mengkonfigurasi peran sabun dan pengguna dan kemudian saya mencoba menghubungkan: đŸ’¥ Parameter tidak valid!

Setelah menggali log, saya melihat ada kesalahan ini:

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

Saya mencari tahu mengapa saya mengalami masalah ini. Sebenarnya, ini tidak terkait dengan orokrin tetapi dengan magento. Itu masalah firewall. Sebenarnya, saya menambahkan aturan dengan benar untuk memungkinkan server crm menyerang magento api tetapi yang ini perlu menjangkau dirinya sendiri! Jadi setelah beberapa sakit kepala, saya hanya menambahkan aturan pada firewall server magento untuk memungkinkan dirinya sendiri (server magento) untuk mencapai api sendiri (semacam pencarian eksternal) ...

Bagaimanapun, saya harap ini akan menghemat beberapa jam untuk seseorang


1
terima kasih atas jawabannya, sangat sulit untuk mendapatkan solusi untuk pertanyaan yang berhubungan dengan sabun ini, saya tahu sakitnya ......
Baby in Magento
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.