Manu.S Geschrieben 21. Juli 2014 Geschrieben 21. Juli 2014 Hallo, ich schreibe in meinem Praktikum im Moment ein Webservice, in dem ich durch eine php-Datei die Systemzeit auslesen lasse. Dazu habe ich eine WSDL-Datei geschrieben (ich bin darin absoluter Laie). Nun soll ich das ganze mit SoapUI testen. Leider funktioniert es nicht. Wenn ich die WSDL-Datei einbinden möchte bekomme ich den Fehler: use of undefined Namespace prefix: Soap Vielleicht kann mir jemand sagen welche Fehler ich in der WSDL-Datei gemacht habe, oder ob ich etwas vergessen habe. Hier der Code(das Projekt ist nur für mich zur Übung, also wird für den Papierkorb geschrieben) PHP-Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> </head> <?php function getClock(){ $timestamp =time(); date_default_timezone_set('Europe/Berlin'); $zeit = date("H:i:s", $timestamp); echo $zeit; } /*SOAP-Schnittstelle*/ /*SOAP ist eine XML-Anwendung*/ /*SOAP => Simple Objekt Access Protocol*/ $SoapProvider = new SoapServer("clockService.wsdl"); /*SoapServer->addFunction() — Fügt eine oder mehrere Funktionen hinzu, die SOAP-Anfragen bearbeiten sollen*/ $SoapProvider -> addFunction("getClock"); /*SoapServer->handle() — Verarbeitet SOAP-Anfragen*/ $SoapProvider -> handle(); ?> <body> </body> </html> Dazu geschriebene WSDL-Datei <?xml version="1.0" encoding="utf-8"?> <definition name = 'ClockService'> /*message=>wie eine Funktion zu betrachten, part zeit die Datentypen der in .php verwendeten Funktionen*/ /*beschreibt Nachrichten die zwischen Client und Server ausgetauscht werden*/ /*Parameter werden im part-Bereich angegeben*/ <message name = 'getClock'> /*name => Name der Variablen, type=> Datentyp der Variablen*/ <part name ='zeit' type = 'string' /> </message> /*Methoden die der Webdienst anbietet werden hier beschrieben . Für jede Methode ein operation*/ /*Request-Resonse => Server bekommt Anfrage und verschickt Antwort*/ <portType name='getClockPort'> <operation name='getClock'> <input message = 'tns:getClock'/> <output message = 'tns:getClock'/> </operation> </portType> /*-----------------konkrete Definition-------*/ /*Binding => legt Transportoption für Funktionen der PHP fest*/ /*enthält Angaben über Transportprotokoll und Format in den die Daten ausgetauscht werden*/ <binding name= 'getClockBinding' type = 'tns:getClockPort'> <option name ='getClock'> <soap:operation soapAction=''/> <output> /*Format mit der die Nachricht versandt wird*/ <soap:body use ='literal'/> </output> <input> <soap:body use ='literal'/> </input> </option> </binding> /*Service=>Möglichkeit den Dienst aufzurufen*/ /*Endpunkt über den der Dienst erreicht werden kann*/ <service name= 'ClockService'> <port name = 'getClockPort' binding = 'getClockBinding' > /*Endpunkt*/ <soap:adress location ='http://127.0.0.1:82/clockService.wsdl'> </port> </service> </definition> Zitieren
Jimbo0915 Geschrieben 22. Juli 2014 Geschrieben 22. Juli 2014 Dazu geschriebene WSDL-Datei <?xml version="1.0" encoding="utf-8"?> <definition name = 'ClockService'> Hi, die Fehlermeldung gibt dir an sich schon den richtigen Tipp. Du definierst die namespaces nicht. Schau dir mal die Basics von WSDL an. Gibt sicher reichlich Links, am besten mal googlen. LG Jimbo Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.