Wo WSDL und wie auf für SoapClient
Ich bin mir sicher, das ist eine dumme newbie-Frage, aber dies ist das erste mal arbeite ich mit der SEIFE, so dass ich denke, dass ich qualifiziert. Ich bin mit einem heck einer Zeit versucht, laden Sie eine lokale WSDL-Datei in mein PHP-Klasse. Ich verstehe nicht, wo es ist, suchen Sie die Datei oder wie kann ich darauf verweisen lokal. Ich konnte den absoluten Pfad, über den die vollständige website-url, aber das scheint zuviel des guten und es würde NUR Arbeit auf dieser Website. Ich würde es vorziehen, verweisen Sie auf die Datei über einen relativen Pfad.
Bin ich mit Hilfe von PHP mit einen Magento-Shop. Die Klasse übernimmt die Kommunikation mit der SOAP-server ist Namespace_Module_Model_Carrier_Fedex_Addressvalidation
, die sich in app/code/local/Namespace/Module/Model/Carrier/Fedex/Addressvalidation.php
. Eine Instanz dieser Klasse wird instanziiert mithilfe Mage::getModel('shippingrates/carrier_fedex_addressvalidation')
innerhalb der Namespace_Module_Model_Carrier_Fedex
Klasse. Die WSDL-Speicherort definiert, an der Spitze der adressvalidierung Klasse:
protected $_wsdl = 'AddressValidationService_v2.wsdl';
Innerhalb des Konstruktors von dem Modell, das ich initialisieren der SoapClient:
$this->_client = new SoapClient($this->_wsdl);
$this->_client->__setLocation($this->getServiceLocation());//returns a remote URL for their test server
Befindet sich die Datei im gleichen Verzeichnis wie die Addressvalidation.php Datei, aber ich habe auch versucht, Ortung es in das gleiche Verzeichnis wie die Fedex.php Drehbuch sowie an app/code/local/, aber nichts funktioniert. Ich habe versucht Einstellung der WSDL-variable ./AddressValidationService_v2.wsdl sowie verschiedene andere Optionen, aber ich bekomme immer eine Ausnahme wie diese:
Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from './AddressValidationService_v2.wsdl' : failed to load external entity
Wenn jemand kann bitte helfen mir zu verstehen, der Umfang und wo die SoapClient sieht für die Dateien, die ich denke, ich werde ein besseres Verständnis davon, wo Sie zu setzen und wie auf diese.
InformationsquelleAutor BrianVPS | 2011-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel die WSDL-Datei zeigt auf die URL nicht auf eine lokale Datei.
Also, wenn Sie ein web-service eingerichtet ist und läuft auf Ihrem lokalen PC, das ist, wie Sie könnten Ihren Kunden für die Prüfung:
Dies ist tatsächlich von einem PHP-Skript auf meinem computer. Ich Teste meine eigenen SoapServer diese Weise und es funktioniert. "
getDetails
" ist eine Methode, definiert in WSDL-Datei und es erwartet einen parameter, die ich übergeben, als$id
.Den debugging-Zeilen sind die Ausgabe nach dem Aufruf, das ist sehr hilfreich für mich.
In Ordnung zu halten Entwicklung bewegen entlang, legte ich die Datei im Stammverzeichnis des Webservers und Referenz mit http:/ /localhost/wsdl/AddressValidationService_v2.wsdl. Jetzt bekomme ich die Fehlermeldung nicht finden Konnte, in 'http:/ /localhost/wsdl/AddressValidationService_v2.wsdl'....konnte nicht finden, WAS??
Sie müssen sich poing zu einer vollständigen url, einschließlich http:// und nicht nur auf " localhost/wsdl/'
Nur versuchen, auf Ihre wsdl-mit einem browser, legen Sie die localhost/wsdl/AddressValidationService_v2.wsdl in der Adresszeile des Browsers, und wenn Sie sehen können Ihre wsdl-Datei im browser dann verwenden Sie einfach die url in Ihrem SoapClient. Wenn Sie es nicht sehen können es browser, dass es ein problem - entweder Ihr apache-server nicht ausgeführt wird, der die Adresse falsch ist
Ich bin...es war was meine URLs in links-und ablegen des Protokolls Teil. Ich setzen Sie ein Leerzeichen zwischen die 2 Schrägstriche, so dass es nicht tun, dass in den Kommentar, aber was ich eigentlich mit in mein Skript korrekt ist. Es ist das finden der WSDL-Datei, aber ich bin jetzt immer die neuen nicht finden Konnte, in... Fehler. Ich weiß nicht, was das ist, beschweren.
InformationsquelleAutor Dmitri Snytkine
Stellt sich heraus, ich hatte eine falsche Konfiguration in meinem Apache-server. Es war das umleiten meiner Anfrage zu "localhost" auf einem anderen virtuellen host auf dem gleichen server. Als ich versuchte, laden Sie die WSDL-Datei aus meinem browser klappte es einwandfrei, aber aus dem Skript auf dem server nicht. Funktioniert es immer noch nicht, aber ich habe Fortschritte gemacht, zumindest.
InformationsquelleAutor BrianVPS