J'essaie de configurer un client SOAP sur un serveur pour communiquer avec Magento sur un serveur de test. L'extension SOAP de PHP est installée, configurée et apparaît dans les deux serveurs phpinfo()
.
J'ai essayé de désactiver la mise en cache, d'utiliser les API v2 et v1 et tout ce à quoi je pouvais penser. Quoi qu'il en soit, je continue d'avoir les mêmes problèmes.
Soit c'est:
<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>
ou parfois une autre erreur SOAP doesn't allow DTD....
Je suis maintenant en utilisant simplement le code exemple Magento plaine d' ici , au lieu de courir quelque chose de significatif, jusqu'à ce que je peux comprendre ce qui se passe avec ça.
Si je fais file_get_contents
à l'URL du service, j'obtiens:
<?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>
Il semble donc qu'il ne devrait pas avoir de mal à analyser ceci .. idk.
la source