Mailinglisten-Archive |
Hallo, aktuell habe ich nach Vorgabe von "Webservices mit PHP" (Christian Wenz) einen kleinen Webservice mit PEAR:SOAP aufgebaut. SOAP-Server und -Client funktionieren auf Basis von PHP tadellos. Jetzt gibt es aber die Möglichkeit ab dem InternetExplorer 5 Behaviors einzusetzen und eine "webservice.htc"-Datei zu nutzen. Laut Beispiel JavaScript-Buch (Christian Wenz) funktioniert das ganze mit den Primzahlen-Beispiel anstandslos. Jetzt bin ich auf die Idee gekommen, eine IE-SOAP-Anfrage an mein PHP-SOAP-Server-Skript zu schicken, aber ohne Erfolg! Es erscheint immer die Fehlermldung die im JavaScript-Code hinterlegt ist. Mit dieser Kombination wäre z.B. eine Preisabfrage über den Browser möglich ohne Reload. Aber wenn es doch von PHP -> PHP geht müßte es doch auch mit IE -> PHP gehn, dafür zeichnet sich ja Webservice aus. Füge ich in der HTML-Seite ein "alert(wert.errorDetail.string);" ein erhalte ich als Meldung: "method '{}jetzt' not defined in service". Blos woher kommen die geschweiften Klammern? Falls jemand eine Idee hat was ich da vergessen/falsch gemacht hab, wäre ich für jeden Hinweis dankbar. MfG Mario Batz Code des SOAP-Server-Skript: --------------------------------------- <?php require_once("SOAP/Server.php"); require_once("SOAP/Disco.php"); # WebService-Klasse class Service { var $__dispatch_map = array(); # Konstruktor function Service() { $this->__dispatch_map["jetzt"] = array( "in" => array("format"=>"string"), "out" => array("uhrzeit"=>"string") ); } function __dispatch($methode) { if(isset($this->__dispatch_map[$methode])) return $this->__dispatch_map[$methode]; else return NULL; } function jetzt($format="Y-m-d H:i:s") { if ($format==null || trim($format)=="") return new SOAP_Fault("Fehler ist aufgetreten","0815-Fehler"); else return date($format); } } $soap = new SOAP_Server(); $server->_auto_translation = true; $service = new Service(); $soap->addObjectMap($service,"urn:soapservice"); if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=="POST") { $soap->service($HTTP_RAW_POST_DATA); } else { $disco = new SOAP_DISCO_Server($soap,"Bezeichnung"); if(isset($_SERVER['QUERY_STRING']) && strcasecmp($_SERVER['QUERY_STRING'],"wsdl")==0) { header("Content-type: text/xml"); print $disco->getWSDL(); } } ?> --------------------------------------- HTML-Seite mit SOAP-Anfrage: --------------------------------------- <html> <head> <title>Web Service</title> <script language="JavaScript"> <!-- function check(f) { ausgabe.innerText = "Bitte warten ..."; DatumService.useService("http://192.168.0.6/soap/server.php?WSDL","Datum"); DatumService.Datum.callService(ergebnis, "jetzt", f.elements["formatierung"].value); } function ergebnis(wert) { if (wert.error) ausgabe.innerText = "Fehler!"; else ausgabe.innerText = wert.value; // Ausgabe durch Alert: method '{}jetzt' not defined in service alert(wert.errorDetail.string); } //--> </script> </head> <body> <div id="DatumService" style="behavior:url(webservice.htc)"></div> <form> Bitte Formatierungszeichen eingeben: <input type="text" name="formatierung" value="Y-m-d"> <input type="button" value="OK" onclick="check(this.form);"> </form> <p id="ausgabe">---</p> </body> </html> ---------------------------------------
php::bar PHP Wiki - Listenarchive