Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Download: - ZIP, ca. 9,2 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / JavaScript und AJAX | vor >>
JavaScript und AJAX von Christian Wenz Das umfassende Handbuch
JavaScript und AJAX 839 S., mit DVD, 39,90 Euro Galileo Computing ISBN 3-89842-859-1 |
| Kapitel 20 Web Services
|  | 20.1 Was sind Web Services?
|  |  | 20.1.1 Verteiltes Arbeiten
|  |  | 20.1.2 WSDL
|  |  | 20.1.3 Web Services aufrufen
|  | 20.2 Web Services mit JScript.NET
|  |  | 20.2.1 Installation
|  |  | 20.2.2 Programmierung
|  | 20.3 Mit dem Internet Explorer auf Web Services zugreifen
|  | 20.4 Mit Mozilla auf Web Services zugreifen
## 20.3 Mit dem Internet Explorer auf Web Services zugreifen Mit der Version 5 des Internet Explorer hat Microsoft so genannte Behaviors (englisch für »Verhalten«) eingeführt. Das ist nichts anderes als eine HTML-Anweisung, mit der Sie (unter anderem) die Voraussetzungen schaffen können, auf Web Services auch aus dem Browser heraus zuzugreifen. Sie benötigen dazu zunächst eine .htc-Datei, die auf dem Microsoft-Webserver unter der URL http://msdn.microsoft.com/archive/en-us/samples/internet/behaviors/library/webservice/ zum Download zur Verfügung steht. Hinter der Datei webservice.htc verbergen sich fast 2300 Zeilen JavaScript-Code. Darin sind die gesamten notwendigen Funktionalitäten – Kommunikation mit dem Web Service, Dekodierung des XML-Rückgabewerts des Web Service und so weiter – implementiert. Kopieren Sie diese Datei in dasselbe Verzeichnis, in dem Sie auch die nächste Datei erstellen werden: die HTML-Maske zum Aufrufen, Ausführen und Auswerten des Web Service. Zunächst müssen Sie das Web-Service-Behavior einbauen. Verwenden Sie dazu einfach ein <div>-HTML-Element, und setzen Sie den style-Parameter auf "behavior:url(webservice.htc)":
    <div id="PrimzahlService"
         style="behavior:url(webservice.htc)"></div>
Als Nächstes benötigen Sie die Maske zum Abfragen des Web Service, d. h. ein Eingabefeld für die zu überprüfende Zahl und eine Schaltfläche zum Starten der Überprüfung:
    <form>
       Bitte Zahl eingeben:
       <input type="text" name="zahl" size="5" />
       <input type="button" value="Prüfen"
              onclick="check(this.form);" />
    </form>
Für die Ausgabe des Ergebnisses verwenden wir ein <p>-Element:
    <p id="ausgabe">---</p>
Wie Sie sehen können, wird die Funktion check() aufgerufen, wenn Sie auf die HTML-Schaltfläche klicken. In dieser Funktion wird eine Reihe von Schritten durchgeführt. Da zwischen dem Aufruf des Web Service und der Rückgabe des Ergebnisses einige Zeit verstreichen kann, wird zunächst ein Text ausgegeben, der den Besucher um ein wenig Geduld bittet:
    document.getElementById("ausgabe").innerText =
       "Bitte warten ...";
Dann greifen Sie auf das Behavior zu. Da es den id-Parameter "PrimzahlService" hat, können Sie direkt über PrimzahlService von JavaScript aus darauf zugreifen. Mit der Methode useService() verbinden Sie das Behavior mit dem Web Service. Dazu übergeben Sie zwei Parameter:
1. | die WSDL-Beschreibung des Web Service; wie Sie wissen, erhalten Sie diese, indem Sie an die .asmx-Datei einfach ?WSDL anhängen.
2. | die Bezeichnung, unter der Sie auf den Web Service zugreifen möchten; "Primzahlen" ist eine gute Wahl.
    PrimzahlService.useService(
       "Primzahlen.asmx?WSDL",
       "Primzahlen");
Im nächsten Schritt rufen Sie schließlich die gewünschte Methode des Web Service auf. Dazu müssen Sie auf PrimzahlService.Primzahlen zugreifen (beachten Sie, wie der zweite Parameter von useService() hier ins Spiel kommt) und dann die Methode callService() aufrufen. Die folgenden drei Parameter werden erwartet:
1. | die Funktion, die beim Eintreffen der Ergebnisse aufgerufen werden soll
2. | der Name der aufzurufenden Methode (hier: istPrimzahl())
3. | der oder die Parameter, die übergeben werden sollen
    PrimzahlService.Primzahlen.callService(
       ergebnis,
       "istPrimzahl",
       f.elements["zahl"].value);
Das Vorgehen beim Aufrufen des Web Service wird auch als asynchron bezeichnet. Das Aufrufen und Auswerten des Web Service wird nicht in einem Aufwasch (synchron) erledigt, sondern in zwei Schritten; als ersten Parameter übergeben Sie an callService eine Referenz (also: keine Anführungszeichen, keine runden Klammern) auf die Funktion, die dann das Ergebnis des Web Service erhält. Diese Funktion muss nun noch geschrieben werden. Als Parameter enthält sie ein Objekt, das unter anderem die folgenden Eigenschaften aufweist:
| error – ein boolescher Wert, der angibt, ob beim Aufruf des Web Service ein Fehler aufgetreten ist (true) oder nicht (false).
| value – das Ergebnis des Web Service, sofern vorhanden (sonst undefined).
Die folgende Funktion überprüft den Rückgabewert und gibt entweder eine Fehlermeldung oder "eine Primzahl" oder "keine Primzahl" aus, je nach Ergebnis des Web-Service-Aufrufs:
    function ergebnis(wert) {
       if (wert.error) {
          ausgabe.innerText = "Fehler!";
       } else {
          ausgabe.innerText = (wert.value == true) ? "" : "k";
          ausgabe.innerText += "eine Primzahl";
       }
    }
Nachfolgend sehen Sie noch einmal das komplette Listing. Es zeigt, dass Sie mit nur wenig Aufwand einen Web Service in Ihre HTML-Dokumente einbauen können – vorausgesetzt, Ihre Besucher benutzen einen Internet Explorer ab Version 5:
    <html>
    <head>
    <title>Web Service</title>
    <script type="text/javascript"><!--
    function check(f){
       document.getElementById("ausgabe").innerText =
          "Bitte warten ...";
       PrimzahlService.useService(
          "Primzahlen.asmx?WSDL",
          "Primzahlen");
       PrimzahlService.Primzahlen.callService(
          ergebnis,
          "istPrimzahl",
          f.elements["zahl"].value);
    }

    function ergebnis(wert) {
       if (wert.error) {
          ausgabe.innerText = "Fehler!";
       } else {
          ausgabe.innerText = (wert.value == true) ? "" : "k";
          ausgabe.innerText += "eine Primzahl";
       }
    }
    //--></script>
    </head>
    <div id="PrimzahlService"
         style="behavior:url(webservice.htc)"></div>
    <form>
       Bitte Zahl eingeben:
       <input type="text" name="zahl" size="5" />
       <input type="button" value="Prüfen"
              onclick="check(this.form);" />
    </form>
    <p id="ausgabe">---</p>
    </body>
    </html>
Hier klicken, um das Bild zu Vergrößern Abbildung 20.8 1021 ist also tatsächlich eine Primzahl. Wenn Sie einen Web Service aufrufen, der nicht auf Ihrem Webserver liegt, hier noch ein Warnhinweis: Aus Sicherheitsgründen unterbindet der Internet Explorer in der Standardeinstellung den Zugriff eines Skripts auf Dokumente von einer anderen Domain. Um dies zu deaktivieren, wählen Sie Extras N Internetoptionen N Sicherheit N Stufe anpassen N Verschiedenes N Auf Datenquellen über Domaingrenzen hinweg zugreifen. Gehen Sie aber nicht davon aus, dass Ihre Benutzer auch diesen Schritt tun! Hier klicken, um das Bild zu Vergrößern Abbildung 20.9 Web Services von anderen Domains aufrufen
<< zurück | <top> | vor >>
Zum Katalog
JavaScript und AJAX bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| JavaScript und AJAX - Das Video-Training
| Webseiten programmieren und gestalten
| XHTML, HTML und CSS
| CSS-Praxis
| AJAX
| PHP 5 und MySQL 5
| TYPO3 4.0
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de