# Zugriff auf Web Service über den Browser



## Jailbird (20. Apr 2005)

Hallo!!
Ich habe ein Verständnisproblem. Kann ich mit einem browser auf einen web service zugreifen? Wie? Vom Prinzip über eine URL, aber was genau passiert da?
Ein web service zeichnet sich ja dadurch aus, dass der client mit dem service über SOAP Nachrichten kommuniziert. Wenn mein sog. Client jetzt ein Browser ist, wie kann dann beschriebene Kommunikation stattfinden? Ein Browser ist doch nicht in der Lage SOAP Anfragen zu erstellen und SOAP Antworten zu verarbeiten, oder?
Zur kurzen Erklärung: Ich will einen web service bauen, der eben über Browser zugreifbar ist und eine Schnittstelle zu einer Oracle Datenbank hat. Wenn der Browser jetzt eine Anfrage an den service schickt (eben vorausgesetzt er kann das), soll dieser als Antwort ein XML file senden, dass die entsprechend der Anfrage benötigten Informationen aus der Datenbank enthält. Ist das verständlich? Hat jemand eine Idee, wie sich das am besten realisieren lassen kann bzw. ob das überhaupt realisierbar ist?
Ihr würdet mir mit ein paar Antworten sehr helfen, da ich nicht mehr viel Zeit habe, das zu bauen..

also schonmal danke für eure potentiellen Antworten 

Jailbird


----------



## Roar (20. Apr 2005)

öh wenn du nur ne xml zurückschickst ist das doch kein problem. wilslt du die dann darstellen? dein xml kannste mit xsl formatieren


----------



## Jailbird (20. Apr 2005)

hallo roar!! genau so ist die nächste version auch gedacht. Die soll dann schon mit 'richtigem' Client und Benutzeroberfläche arbeiten. Und mit XSL file, mit dem ich mir dann aus dem XML ein XHTML file basteln kann. Aber wie gesagt, dass ist erst für die nächste oder auch überübernächste version geplant. Jetzt soll Ergebnis der Transaktion einfach ein XML file auf der Platte des users sein. Aber eben realisiert als web service um noch viele weitere Funktionalitäten implementieren zu können. (wie die Transformation oder auch ein Datenbankupdate auf user-Seite oder eine Automatisierung des Ganzen, die sicherstellt, dass der user immer die aktuellsten Daten hat. Aber wie gesagt, das ist noch Zukunftsmusik..) Nur da ich absoluter Newbie auf dem Gebiet der web services bin und ein erstes Ergebnis bald stehen muss und ich zugegebenermassen etwas überfordert mit der ganzen Geschichte bin, reicht mir für den Anfang auch nur der Service, der eben über Browser zugreifbar sein soll. Ist das jetzt totaler Blödsinn oder hört sich das für dich plausibel an?
Weisst du, die Sache, die ich nicht verstehe, ist das Ding mit den SOAP Nachrichten. Mein Service kann mithilfe von Java Klassen eine solche generieren und verschicken, aber wie kann dann der Browser die Nachricht verarbeiten und wie muss die Anfrage aussehen bzw. erstellt werden (ein physikalisch installierter Client beim user könnte das ja genauso wie der service tun..). 
Und eine entscheidende Frage, die ich mir auch noch nicht beantworten kann ist, welche Interfaces  auf user Seite benötigt bzw. Sinn machen würden.

Vielen Dank, dass du mir geantwortest hast.


----------



## Jailbird (21. Apr 2005)

ok.. die Frage ist etwas spezifischer...

Wenn ich mit dem Browser auf einen web service zugreife und dieser kommuniziert mit SOAP, wo genau werden dann der SOAP request und die response erstellt und verarbeitet? 
Oder anders gefragt, was passiert mit der SOAP response wenn sie abgeschickt wird, wohin wird sie geschickt und wie wird sie da verarbeitet, wenn der user über Browser zugreift. Wie gesagt, Ergebnis soll ein XML file auf der Platte des users sein.

Bitte helft mir, ich hab nämlich das Gefühl, dass ich mich in einer Sackgasse festgedacht habe..

 DANKE


----------



## Roar (21. Apr 2005)

öhm
also der browser ruft den service doch einfach über ne url auf. ich hab das mal mit amazon getestet. die stellen auch nen soap service zur erfügung um nach items zu suchen und so. ich habs im browser getestet: geschickt hab ich nur die url mit entsprechenden parametern zurück kam ne xml. das is doc hdas was du wilslt oder?


----------



## Jailbird (21. Apr 2005)

Ja genau. aber ich kann mir das im Detail nicht vorstellen.. wenn der service eine SOAP message schickt, wie kommt dann das XML file auf die Platte. Der service von amazon, kriegt man dazu ne ausführliche Beschreibung oder sogar die sourcen von dem service selber? also ich meine nicht von der Benutzung desselben.


----------



## Roar (21. Apr 2005)

von amazon kriegste ne ausführliche beschreibung wie du ihn benutzen sollst.

wenn du an den browser ne xml schickst, muss der benutzer die seite natürlich manuell an dem ort abspeichern wo er (du) sie haben will(st)


----------



## Jailbird (21. Apr 2005)

Gut, jetzt weiss ich DAS es funktioniert, aber WIE? Ich habe noch kein Beispiel im Netz gefunden und auch zum Laufen gebracht, das dem was ich machen will etwas entgegenkommt. Aber um zu einem Ergebnis zu kommen, brauche ich eine Beispielanwendung anhand derer ich mich dann weiterhangeln kann. bin beileibe kein programmierer und hab nicht mehr genug zeit um bei helloWorld anzufangen.

gibt es eine beschreibung zu der Implementierung des webservices oder den Interfaces oder oder oder?


----------



## Bleiglanz (22. Apr 2005)

du kannst mit einem Browser NICHT auf einen Webservice zugreifen

sondern auf eine serverseitige komponente (Servlet, PHP, ASP Seite) und diese Komponente könnte auf den WS zugreifen und das resultat als HTML zurückschicken

[du bekommst nur triviales XML, GET und POST Parameter werden nicht als SOAP-Parameter übersetzt; im moment kann kein Browser native SOAP Requests verschicken - wenn dann nur mit Javascript o.ä]

Browser und Webservices haben NICHTS miteinander zu tun...


----------



## AlArenal (22. Apr 2005)

Web-Services heißen vermutlich so, weil sie in der Regel über einen normalen Web-Server (http) mit irgendeiner Skript-Erweiterung laufen.

Beim Arbeiten mit SOAP kommt man mit XML im Normalfall nicht in Berührung. Die Umwandlung in/aus XML übernehmen entsprechende SOAP-Libs. Du sagst ja im Grunde nur "rufe über folgende URL die Funktion XYZ mit den Parametern A, B und C auf und liefere mir das Ergebnis".


----------



## Jailbird (22. Apr 2005)

aahha.. gut.. was haltet ihr von einem Gateway als Schnittstelle zwischen Browser und web service? welche Haken seht ihr an folgendem Ablauf?

1. Der user hat das WSDL dokument vom web service und kann so über Browser (in Zukunft mit 'richtigem' Client) eine URL senden. 

2. Auf einer JSP-Login-Page logt sich der user ein.

3. Die login Daten werden mithilfe eines gateways in einen SOAP request gepackt und an den web service geschickt.

4. Der benutzername des users ist gemappt mit verschiedenen Informationen in einer Oracle Datenbank.

5. Aufgrund dieser Informationen ist dem web service bekannt, welche Informationen der user haben will und er kann die entsprechenden SQLqueries erstellen.

6. Diese queries sendet er zur Datenbank, die mithilfe von Oracle XML SQL utility die angefragten Daten in ein XML file packt und dieses dem web service zur Verfügung stellt.

7. Der packt das Ganze in eine SOAP response und schickt die weiter an den Gateway.

8. Und der wiederum schickt das XML file als solches an den Browser zurück..

9. ..wo dann schliesslich der Standard Browser-Download-Dialog erscheint.

10. Letztenendes speichert der user dieses File und ist zufrieden 


Also ihr seht.. nix wildes eigentlich, ein Standard workflow.. Aber wie gesagt, meine Frage ist, lässt sich das so verwirklichen? Nochmal zusammengefasst, ich will verwenden:

WSDL   (für den user)
JSP   (für die login page)
gateway   (zur Umwandlung von und in SOAP)
Den web service selbst  (erstellt SQL queries basierend auf request und erstellt response)
Oracle 9iR2   (Datenbank eben)
JDBC   (als Schnittstelle zwischen web service und Oracle)
Oracle XML SQL utility   (um das XML file zu generieren)

so hab ich mir das gedacht, aber geht das auch oder welche Haken sind da noch an der Sache?

Vielen Dank, für eure Antworten!!!

Und geniesst diesen schönen Tag lieber draussen (nachdem ihr mir geantwortet habt  ), morgen solls wieder regnen. Wochenende halt :/

Jailbird


----------



## Jailbird (22. Apr 2005)

Ach ja.. was ich noch vergessen habe: Als Application server verwende ich BEA weblogic server 7.0.


----------



## Bleiglanz (23. Apr 2005)

>> WSDL (für den user) 

toller lacher


----------

