Ich versuche, einen SOAP-Client auf einem Server für die Kommunikation mit Magento auf einem Testserver einzurichten. Auf beiden Servern ist die SOAP-Erweiterung von PHP installiert, konfiguriert und wird in angezeigt phpinfo().
Ich habe versucht, das Caching mit den APIs v2 und v1 und allem anderen, was mir einfällt, auszuschalten. Trotzdem bekomme ich immer die gleichen Probleme.
Entweder ist es:
<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>
oder manchmal ein anderer Fehler SOAP doesn't allow DTD....
Ich verwende jetzt nur den einfachen Magento-Beispielcode von hier , anstatt irgendetwas Bedeutendes auszuführen, bis ich herausfinden kann, was damit los ist.
Wenn ich file_get_contentsmit der Service-URL mache , bekomme ich:
<?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>
Es scheint also, dass es keine Probleme geben sollte, dies zu analysieren.