Où mettre les fichiers WSDL et la façon de référence pour SoapClient
Je suis certain que c'est une stupide question de newbie, mais c'est la première fois que je travaille avec du SAVON, donc je suppose que je suis admissible. Je vais avoir un diable de temps à essayer de charger un local fichier WSDL à partir de l'intérieur de ma classe PHP. Je ne comprends pas où il est à la recherche pour le fichier ou comment je peut faire référence à l'échelle locale. J'ai pu mettre le chemin absolu d'utiliser la totalité de l'url du site web, mais qui semble exagéré et il ne le travail sur ce site. Je préfère la référence du fichier à l'aide d'un chemin d'accès relatif.
Je suis à l'aide de PHP avec une boutique Magento. La classe qui gère la communication avec le serveur SOAP est Namespace_Module_Model_Carrier_Fedex_Addressvalidation
, qui est situé à la app/code/local/Namespace/Module/Model/Carrier/Fedex/Addressvalidation.php
. Une instance de cette classe est instanciée à l'aide de Mage::getModel('shippingrates/carrier_fedex_addressvalidation')
de l'intérieur de la Namespace_Module_Model_Carrier_Fedex
classe. L'emplacement WSDL est définie en haut de la validation des adresses de classe:
protected $_wsdl = 'AddressValidationService_v2.wsdl';
Dans le constructeur du modèle j'ai initialiser le SoapClient:
$this->_client = new SoapClient($this->_wsdl);
$this->_client->__setLocation($this->getServiceLocation());//returns a remote URL for their test server
Le fichier se trouve dans le même répertoire que le Addressvalidation.php fichier, mais j'ai aussi essayé de le trouver dans le même répertoire que le Fedex.php script ainsi qu'à app/code/local/ mais rien ne fonctionne. J'ai essayé le réglage de l'WSDL variable ./AddressValidationService_v2.wsdl ainsi que diverses autres options, mais je reçois toujours une exception comme ceci:
Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from './AddressValidationService_v2.wsdl' : failed to load external entity
Si quelqu'un peut s'il vous plaît m'aider à comprendre la portée et où la SoapClient cherche les fichiers, je pense que je vais avoir une meilleure compréhension de l'endroit où les mettre et comment les référencer.
Vous devez vous connecter pour publier un commentaire.
Généralement le fichier WSDL points à l'URL pas à un fichier local.
Donc, si vous avez un web service mis en place et en cours d'exécution sur votre PC local, c'est comment vous pouvez configurer votre client pour le test:
C'est en fait issu d'un script PHP sur mon ordinateur. Je test mon propre SoapServer de cette façon et ça fonctionne. "
getDetails
" est une méthode définie dans le fichier WSDL et il attend un paramètre, que je passe comme$id
.Le débogage lignes sont de sortie après l'appel, ce qui est très utile pour moi.
S'avère que j'avais une mauvaise configuration de mon serveur Apache. Il était de rediriger ma demande de "localhost" sur un autre hôte virtuel sur le même serveur. Quand j'ai essayé de charger le fichier WSDL à partir de mon navigateur, il a bien fonctionné, mais à partir du script sur le serveur, il n'a pas. Ça ne marche toujours pas, mais j'ai fait des progrès au moins.