Lỗi SOAP: Phân tích cú pháp WSDL: Không thể tải từ phiên bản không thể tải thực thể bên ngoài


9

nhập mô tả hình ảnh ở đây

Chúng tôi đang phát triển một ứng dụng Android cho một trang web magento. Chúng tôi phải chuyển API SOAP từ magento sang Android để có id phiên.

Chúng tôi đã tạo người dùng và vai trò web SOAP trong bảng quản trị magento bằng cách theo liên kết sau:

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

Khi chúng tôi cố gắng kết nối từ Android đến magento, chúng tôi gặp lỗi. Đây là liên kết chúng tôi đang sử dụng:

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


1
Xin chào - Tôi không thể thấy lỗi tại liên kết bạn cung cấp; Nó nói xuống để bảo trì.
Garet Claborn

xin chào, xin lỗi rằng trang web đang được bảo trì, vui lòng kiểm tra câu hỏi cập nhật.
Em bé ở Magento

1
Bạn đã thử các bước từ câu hỏi trước của tôi? Điều này trông giống như lỗi tôi gặp phải do tường lửa và cài đặt NAT cho máy chủ của tôi.
Garet Claborn

1
Khi magento đang cố gắng để có được một số tài nguyên, nó sẽ tạo ra nhiều yêu cầu SOAP hơn cho chính nó, nhưng thay vì sử dụng localhost như nó, nó sẽ cố gắng chuyển sang IP và tên máy chủ bên ngoài. Trong trường hợp của tôi, tôi đã phải mở tường lửa để lặp lại và thêm tên miền và IP bên ngoài của mình vào tệp máy chủ
Garet Claborn

okay @GaretClaborn tôi sẽ kiểm tra với nhóm máy chủ.
Em bé ở Magento

Câu trả lời:


5

Máy chủ SOAP cần được khởi tạo với WSDL để hiểu cách xử lý các yêu cầu đến (về cơ bản nó tải WSDL từ URL được chỉ định trong trường hợp Magento). Điều này xảy ra trong \Mage_Api_Model_Server_Adapter_Soap::_instantiateServer():

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

Lưu ý rằng getWsdlUrl()xây dựng URL WSDL dựa trên URL cơ sở Magento của bạn. Điều đó có nghĩa là nếu cửa hàng Magento của bạn không thể truy cập được từ máy chủ nơi triển khai, máy chủ SOAP sẽ không thể tải WSDL trong quá trình khởi tạo. Kết quả là bạn sẽ gặp phải lỗi như vậy khi cố gắng thực hiện các yêu cầu đối với API Magento SOAP.


Và làm thế nào chúng ta có thể khắc phục điều này?
Alexandros

Thêm máy chủ Magento /etc/hostsvào máy chủ.
Alex Paliarush

Tôi đã thêm IP XXX.XXX.XXX.XXX www.example.com nhưng tôi vẫn nhận được điều tương tự. Tôi cũng đã cố gắng kiềm chế và ping tên miền đầy đủ và chúng hoạt động :(
Alexandros

Bạn có thể tải WSDL trong khi trên máy chủ đó không?
Alex Paliarush

1
Không chắc chắn hơn, hãy thử gỡ lỗi ở đâu đó xung quanh\Mage_Api_Model_Server_Adapter_Soap::_instantiateServer()
Alex Paliarush

2

Tôi đã trải qua vấn đề tương tự. Tôi đã cài đặt cây cầu orocm cần truy cập api xà phòng, làm theo các bước đã cho để định cấu hình vai trò xà phòng và người dùng và sau đó tôi đã cố gắng kết nối: Các thông số không hợp lệ!

Sau khi đào các bản ghi, tôi đã nhận thấy lỗi này:

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

Tôi đã tìm ra lý do tại sao tôi gặp vấn đề này. Trên thực tế, điều này không liên quan đến orocm mà là magento. Đó là một vấn đề tường lửa. Trên thực tế, tôi đã thêm chính xác các quy tắc để cho phép máy chủ crm tấn công api magento nhưng điều này cần phải tự mình tiếp cận! Vì vậy, sau một số vấn đề đau đầu, tôi chỉ cần thêm một quy tắc trên tường lửa của máy chủ magento để cho phép chính nó (máy chủ magento) tiếp cận với api của chính nó (loại tra cứu bên ngoài) ...

Dù sao, tôi hy vọng điều này sẽ tiết kiệm một vài giờ cho ai đó


1
cảm ơn vì đã trả lời, rất khó để có được giải pháp cho những câu hỏi liên quan đến xà phòng này, tôi biết nỗi đau ......
Em bé ở Magento
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.