Tôi đang cố gắng thiết lập ứng dụng khách SOAP trên một máy chủ để liên lạc với Magento trên máy chủ thử nghiệm. Cả hai máy chủ đều có phần mở rộng SOAP của PHP được cài đặt, định cấu hình và hiển thị trong phpinfo()
.
Đã thử tắt bộ nhớ đệm, sử dụng API v2 và v1 và mọi thứ khác tôi có thể nghĩ ra. Bất kể, tôi tiếp tục nhận được những vấn đề tương tự.
Hoặc là:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>
Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL:
Couldn't find <definitions> in 'http://myserver.com/api/v2_soap?wsdl=1'
in dispatch.php:39
Stack trace: #0 dispatch.php(39):
SoapClient->SoapClient('http://myserver.com/...', Array) #1 {main} thrown
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
hoặc đôi khi một lỗi khác SOAP doesn't allow DTD....
Bây giờ tôi chỉ sử dụng mã ví dụ Magento đơn giản từ đây , thay vì chạy bất cứ thứ gì quan trọng, cho đến khi tôi có thể hiểu được chuyện gì đang xảy ra với điều này.
Nếu tôi làm file_get_contents
với URL dịch vụ, tôi nhận được:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:typens="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="Magento" targetNamespace="urn:Magento">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="associativeEntity">
<all>
<element name="key" type="xsd:string"/>
<element name="value" type="xsd:string"/>
</all>
</complexType>
.
.
.
</definitions>
Vì vậy, có vẻ như nó không gặp khó khăn khi phân tích cú pháp này .. idk.