wsdl + soap
Mickymaus
- php
Guten Tag,
ich kenne mich ja in PHP recht gut aus, habe allerdings nie mit SOAP und WSDL gearbeitet. Daher meine Frage:
Ich habe eine ganz normale URL, die den öffentlichen WSDL Endpoint darstellt, da versuche ich dann mit $Client = new SoapClient($wsdl); zu verbinden, kriege aber nur die Fehlermeldung Failed to load external entity.
Ich stehe gerade absolut auf dem Schlauch. Woran kann sowas liegen? An den Proxys hier im Uninetz? An der restriktiven Firewall hier? Laut http://at2.php.net/manual/de/soapclient.soapclient.php ist mein Code nämlich absolut valide - hab ihn 1zu1 so kopiert.
Beim durchlesen der Kommentare habe ich es dann auch mit $Client = new SoapClient($wsdl,array('user' => "user",'password' => "pw")); probiert - funktionierte auch nicht. Irgendwann ist mir dann dieser Kommentar aufgefallen:
"I found that WSDL fetching fails when using basic authentication in the soapclient. So I implemented the following workaround using wget. I realize wget may not be an option for some environments, in that case cURL would be the next simplest thing. "
Kann es daran liegen? Und wenn ja wieso? Wie gesagt ist das erste mal, dass ich damit arbeite von daher wäre es nett, wenn mir das jemand erklärt. Was ist der Unterschied zwischen basic authentication und den wohl anderen authentication-Arten die es mutmaßlich noch gibt? Und wie kann ich dann das WSDL file local fetchen, genau das macht der ja in seinem Kommentar / Code, nur funktioniert das bei mir nicht?
Vielen Dank. ;)
Tach!
Vorab, ich kenne die Antwort nicht. Aber ich kann dir meine Gedanken mitteilen, in welcher Richtung ich suchen würde.
Ich habe eine ganz normale URL, die den öffentlichen WSDL Endpoint darstellt, da versuche ich dann mit $Client = new SoapClient($wsdl); zu verbinden, kriege aber nur die Fehlermeldung Failed to load external entity.
Wenn du nach dem Fehlermeldungstext suchen lässt, wirst du feststellen, dass der Meldungstext auch in anderen Programmiersprachen auftaucht. Das scheint also ein Text aus der intern verwendeten XML-Library zu sein.
Ich stehe gerade absolut auf dem Schlauch. Woran kann sowas liegen?
Weiterhin findet man in den Antworten als mögliche Ursachen Dinge wie Pfad nicht richtig angegeben, bei https das SSL nicht aktiviert - also Datenübertragungsfehler. Man findet aber auch, dass im XML/XSL etwas referenziert ist, was zum Parsen des Dokuments benötigt wird. Ob letzteres aber bei SOAP/WSDL zutreffen kann, entzieht sich meiner Kenntnis.
An den Proxys hier im Uninetz? An der restriktiven Firewall hier?
Die müssten auch zuschlagen, wenn du die Ressource einfach so zu ziehen versuchst. Wenn du ausschließlich über Proxys ins Internet kommst, muss auch PHP diesen Proxy kennen. Wenn Dateisystemfunktionen für Downloads verwendet werden, kann man einen Stream-Kontext-Parameter angeben. Über diesen Mechanismus kann man auch einen Proxy oder Headerzeilen konfigurieren. Das steht irgendwo in den Tiefen des PHP-Handbuchs beschrieben.
"I found that WSDL fetching fails when using basic authentication in the soapclient. So I implemented the following workaround using wget. I realize wget may not be an option for some environments, in that case cURL would be the next simplest thing. "
Kann es daran liegen?
Ich weiß es nicht. Es kann gut sein, dass sich die Ursache erst durch Mitschneiden und Auswerten des HTTP-Verkehrs ermitteln lässt.
dedlfix.
Hallo User Mickymaus,
Ich habe eine ganz normale URL, die den öffentlichen WSDL Endpoint darstellt, da versuche ich dann mit $Client = new SoapClient($wsdl); zu verbinden, kriege aber nur die Fehlermeldung Failed to load external entity.
hast du denn schonmal versucht, die URI per Browser aufzurufen?
http://example.com/file/to/wsdl/webservice.asx?WSDL?
Beim durchlesen der Kommentare habe ich es dann auch mit $Client = new SoapClient($wsdl,array('user' => "user",'password' => "pw")); probiert - funktionierte auch nicht. Irgendwann ist mir dann dieser Kommentar
Ist die WSDL-Datei denn tatsächlich geschützt?
Es gibt ein Tool, welches sich SOAP-UI nennt. Das könntest du mal probieren. Sollte es für Linux und Windows geben.
Freigänger pille19