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/

Baby di Magento
sumber
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.

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

lenybernard
sumber
1
terima kasih atas jawabannya, sangat sulit untuk mendapatkan solusi untuk pertanyaan yang berhubungan dengan sabun ini, saya tahu sakitnya ......
Baby in Magento