Soap ohne WSDL

Hier wird die Programmierung des Backends besprochen

Moderator: SebastianWagner

Soap ohne WSDL

Postby hisham on 22.11.2007 15:08

Hallo,
Ich schreibe zum ersten Mal in diesem super Forum und hoffe, dass mein Topic beantwortet wird :)

Ich möchte mit RPC Webservice-Dienste mittles SOAP kommunizieren Die Webservice sind in PHP5 implementiert und werden durch URL in Form
(http://10.120.3.9/blabla/blabla....service.php5) angeboten (also keine WSDL-Unterstützung).
So weit ich weiß, wenn man das SOAP-Tag in Openlaszlo verwendet, muss als Attribute die WSDL angegeben werden. ( <soap name="..." WSDL="......" />).

Gibt es eine andere Möglichkeit via SOAP mit den Webservices ohne Angabe von WSDL zu kommunizieren.

schöne Grüße
Hisham
hisham
Laszlo-Member
 
Posts: 18
Joined: 22.11.2007 14:52

Re: Soap ohne WSDL

Postby SebastianWagner on 22.11.2007 15:30

du kannst nach einer JAVA-API schauen die SOAP Aufrufe ohne WSDL umsetzt. Aber ansonsten gehört das WSDL-Dokument eigentlich zu SOAP dazu ... im WSDL steht schließlich drin was für Daten-Typen, welche Methoden und was für Results da ansprechbar / verschickt werden. Das man sowas in manchen Skript-Sprachen wie PHP auch dynamisch machen kann bringt dir für andere Programme relativ wenig.

gruß
sebastian
User avatar
SebastianWagner
Site Admin
 
Posts: 1049
Joined: 22.04.2005 21:32
Location: http://webconference.livejournal.com/

Re: Soap ohne WSDL

Postby hisham on 22.11.2007 16:08

Hallo Sebastian,
danke für deine Antwort.
Die Webservices sind für SOAP-Nachrichten mit PHP implementiert aber die Datentypen und die Methoden sind nicht in einer WSDL-File bzw. als WSDL-Format deklariert. Wenn ich jetzt Java-Api für Webservices in Openlaszlo integrieren will, wie mache ich das(ich meine Java klassen zu schreiben kein thema, aber aufgerufen durch Openlaszlo?)? Es gibt auch die Möglichkeit mit Javascript zu arbeiten, wie du weißt, JS-Codes werden direkt in LZX-Tags embedded. aber mit Java API!

Gruß
hisham
Laszlo-Member
 
Posts: 18
Joined: 22.11.2007 14:52

Re: Soap ohne WSDL

Postby SebastianWagner on 22.11.2007 18:15

ähm ich glaub du bringst das etwas durcheinander.
Direkt SOAP Services aufrufen vom Client aus geht erstmal grundsätzlich gar nicht, außer der CLient und das SOAP-Gateway liegen auf dem Selben Rechner (werden von der selben Domain geladen) oder man plaziert bei Flash eine sogenannte CrossDomain.xml. Alles andere erlaubt dein Browser bzw die Flash-SandBox nicht (CrossDomainScripting)
Die Daten werdne also immer vom OpenLaszlo Server ge-proxied, d.h. der Weg lautet immer SOAP-Gateway => OpenLaszlo => Laszlo_Client
Dass du die Definitionen wo das Gateway liegt usw im Client machst ändert nichts daran dass die Daten trotzdem erst vom OpenLaszlo Server geladen werden. Diesen Modus nennt man proxied und das ist der default Modus.
Also du arbeites auch mit eingebettem JS-Code nicht direkt mit JAVA im Client .. der Java-Code wird immer auf dem Server ausgeführt solange du kein Applet oder JavaWebStart einsetzt.
Du solltest schauen ob du nicht vielleicht mithilfe von deinem PHP-Code einfach ein WSDL generieren kannst. Ansonsten hast du auch noch die Möglichkeit nach alternativen Schnittstellen dich umzuschauen wie zB amfphp (nur Flash RunTime).
User avatar
SebastianWagner
Site Admin
 
Posts: 1049
Joined: 22.04.2005 21:32
Location: http://webconference.livejournal.com/

Re: Soap ohne WSDL

Postby hisham on 23.11.2007 12:18

Hallo Sebastian,

Danke sehr für die Erklärungen. Erlaube mir bitte weitere Fragen zu stellen, da ich neu in Openlaszlo eingestiegen bin.
Nun auf dem Server (Wo die Webservices mit PHP implementiert wurden) kann ich leider nichts machen (ich habe keine befügnisse dafür). Ich arbeite nur
an der Seite von Openlaszlo (Client und Server).
Es kann sein, dass die Sache einfacher als ich sie vorstelle, aber ich habe versucht durch XMLRPC eine remote mothod aufzurufen Dann der Debugger hat eine Fehlermeldung "Http status 500 -- Interne Server Error" ausgegeben. Dann habe durch den Webservice-Implementierer erfahren, dass die Webservice nur SOAPRPC unterstützen und nicht XMLRPC oder JavaRPC. Dann habe ich logischerweise versucht, die letzte Möglichkeit SOAPRPC einzusetzen aber wie schon erwähnte wegen der Pflicht WSDL-Attribute hang ich ab :( . Nun habe den WS-Programmierer kontaktiert und meinte es könnte gehen, wenn ich in der WSDL-Attribute
(wsdl=http://.........?WSDL) also ?wsdl anhänge, hat aber nicht geklappt :(
Da in diesem Forum viele erfahrene Leute, frage ich, was würde man in dieser Situation machen.

schöne Grüße
Hisham
hisham
Laszlo-Member
 
Posts: 18
Joined: 22.11.2007 14:52

Re: Soap ohne WSDL

Postby SebastianWagner on 23.11.2007 16:06

in java gibts ein Tool das hast Java2Wsdl ... damit kann man auf basis eines fertigen Services auch ein *Statisches* wsdl dokument generieren lassen. Also könntest du zB ein WSDL *von hand* erstellen und dass sohinterelgen dass es für OpenLaszlo so aussihet als obs das echt WSDL dokument ist.

oder du nimmst einfach eine weitere zwischen-kommunikation dazwischen .. sprich du programmierst einen Java-Service auf dem OpenLaszlo Server der den WebService anspricht. Soweit ich weiß brauchst du für SOAP 1.2 gar nicht zwangsläufig ein WSDL dokument anzugeben. Das ist wahrscheinlich einfacher als ersteres .. weil ein WSDL dokument von Hand zu erstellen könnte einige zeit dauern. Und das Ergebnis würdest du dann über javaRPC wieder an den CLient schicken...
der Weg wäre dann:
Openaslzlo Client => per javaRPC and OpenLaszlo Server => javaRPC/OpenLaszlo per JAVA-SOAP => Client an PHP5 => und dann der weg wieder zurück.
Deine Aufgabe wäre dann eine JAVA-Lib zu finden mit dem du den PHP-WebService ansprechen kannst.

gruß
sebastian
User avatar
SebastianWagner
Site Admin
 
Posts: 1049
Joined: 22.04.2005 21:32
Location: http://webconference.livejournal.com/


Return to Serverseitige Programmierung

Who is online

Users browsing this forum: No registered users and 1 guest

cron