Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Christoph Spielmann, Düsseldorf
Die Kommunikation zwischen Anwendungen spielt bei modernen Datenbanken eine wesentliche Rolle. Häufig ist es beispielsweise notwendig, dass eine Anwendung auf eine Datenbank zugreifen soll, hierbei jedoch keinen direkten Zugriff auf die Tabellen haben darf. Zudem kann der Fall eintreten, dass die Datenbank nicht auf dem lokalen PC oder im lokalen Netzwerk, sondern irgendwo im Internet untergebracht ist. Um hier eine Kommunikation zu ermöglichen, bietet sich der Einsatz von Web-Services an. Dieser Artikel zeigt Ihnen, wie Sie mit Access auf den Web-Service der Suchmaschine “Google” zugreifen und die abgefragten Suchergebnisse in einer Datenbank speichern.
Bei Web-Services handelt es sich um Anwendungen, die ihre Dienste über ein standardisiertes Protokoll zur Verfügung stellen. Hinter diesem Protokoll verbirgt sich nichts anderes als eine Textdatei im XML-Format.
Der Hintergrund ist, dass XML-Dateien von modernen Browsern wie herkömmlicher HTML-Code interpretiert werden können. Dementsprechend gelangen XML-Dateien z. B. problemlos durch Firewalls, sofern diese für den normalen Transfer von Web-Seiten freigeschaltet sind. Die Kommunikation findet über den Port 80 statt, der für Web-Server reserviert ist.
Nun genügt es nicht zu definieren, dass die Daten per XML übertragen werden. Wichtig ist außerdem noch, dass eine spezielle XML-Struktur zum Einsatz kommt. Diese Strukturdefinition trägt den Namen SOAP (Simple Object Access Protocol). Bei der Entwicklung von SOAP war das Ziel, die Kommunikation für den Benutzer möglichst einfach zu gestalten. Zudem sollte SOAP alle möglichen Programmier-Werkzeuge und Plattformen (z. B. Windows, Linux oder Macintosh) unterstützen.
Herausgekommen ist ein standardisiertes Protokoll zum Abruf von Objektmethoden über das Internet. Sie kennen dies bereits von VBA und Access: Wenn Sie ein Klassenmodul namens clsDienst in Ihrer Anwendung haben, können Sie die darin enthaltene Methode Start über die folgende Syntax aufrufen:
Dim MeinDienst as new clsDienst MeinDienst.Start
ähnlich einfach ist der Aufruf mit Hilfe von SOAP, wenn sich die Klasse Dienst auf einem Rechner im Internet befindet.
Da Web-Services eine relativ neue Technologie sind, stellt Access noch keine eingebauten Funktionen zum Aufruf von Web-Services zur Verfügung. Sie benötigen dafür ein spezielles Toolkit namens Microsoft Office XP Web Services Toolkit 2.0. Um die hier vorgestellte Lösung nachvollziehen zu können, müssen Sie dieses Toolkit unter der folgenden Adresse herunterladen:
Bild 1: Registrierung bei Google
http://download.microsoft.com/download/OfficeXPDev/Install/2.0/W982KMeXP/DE/setup.exe
Achten Sie darauf, dass Sie nicht versehentlich die Version 1.0 herunterladen, auf die Microsoft noch von den Office-Startseiten verlinkt.
Hinweis
Von dem Zusatz XP sollten Sie sich übrigens nicht verwirren lassen: Das Toolkit funktioniert sowohl mit Access 2000 als auch mit Access XP. ältere Versionen wie z. B. Access 97 werden allerdings nicht unterstützt.
Nach dem Download starten Sie die EXE-Datei und installieren das Toolkit.
Wie bereits erwähnt, greift das hier vorgestellte Beispiel auf die Suchmaschine Google zu. Die Google-Betreiber möchten hierbei sicherstellen, dass der Zugriff nicht missbraucht wird.
Schließlich wäre es denkbar, eine eigene Suchmaschine im Internet zu veröffentlichen, die in Wirklichkeit per Web-Service auf Google zugreift. Aus diesem Grund ist eine vorhergehende Registrierung bei Google erforderlich, bei der Sie einen Schlüssel erhalten. Dieser Schlüssel berechtigt Sie, täglich maximal 1000 Suchergebnisse abzufragen, was in der Praxis mehr als genug sein dürfte.
Zur Durchführung der Registrierung gehen Sie wie folgt vor:
Nach dem letzten Schritt erhalten Sie von Google eine erneute E-Mail, die Ihren Schlüssel zum Zugriff auf den Web-Service enthält. Bewahren Sie diesen gut auf.
Bild 2: Der Startbildschirm des Web-Service-Toolkits
Bild 3: Die Suche nach Web-Services zum Thema Wetter.
Um nun eine Verbindung zu Google herzustellen, legen Sie zunächst eine neue Access-Datenbank an. Klicken Sie anschließend auf Module und danach auf Neu, um ein neues Modul anzulegen. Dieser Schritt ist erforderlich, da die Funktionen des Web-Service-Toolkits nur vom VBA-Editor aus zur Verfügung stehen.
Nachdem Sie nun den VBA-Editor auf dem Bildschirm haben, wählen Sie den Menüpunkt Extras/Webdienstverweise aus. Dieser Menüpunkt startet das Toolkit (siehe Bild 2).
Auf der linken Seite des Startfensters haben Sie die Möglichkeit, nach Web-Services zu suchen. Hierbei kommen spezielle Suchmaschinen zum Einsatz. Wenn Sie beispielsweise unter Schlüsselwörter den Text weather eingeben und anschließend auf Suchen klicken, erscheint einige Zeit später eine Liste aller Web-Services zum Thema Wetter (siehe Bild 3). Voraussetzung für die erfolgreiche Suche ist natürlich, dass Sie mit dem Internet verbunden sind.
Anhand der Liste können Sie bereits die Struktur der einzelnen Dienste erkennen. Der Dienst WeatherRetriever unterstützt beispielsweise zwei Methoden namens GetTemperature und GetWeather. Um den Web-Service auszuprobieren, markieren Sie diesen in der Liste und klicken auf Testen.
Das Toolkit öffnet nun den Internet-Explorer und ruft eine spezielle Seite auf, die der Anbieter zum Test des Web-Services zur Verfügung stellt. Auf dieser Seite werden auch die beiden Methoden GetTemperature und GetWeather aufgeführt (siehe Bild 4).
Hinweis
Dieser Web-Service wurde mit Hilfe der Microsoft .NET-Technologie entwickelt. Wenn Sie einen mit einem anderen Werkzeug entwickelten Web-Service aufrufen, hat die Testseite einen anderen Aufbau.
Bild 4: Die Hauptseite zum Test eines Web-Service
Bild 5: Auswahl des Ortes zur Ermittlung der Temperatur
Bild 6: Das Ergebnis der Temperatur-Abfrage
Bild 7: Die URL des Google Web-Service
Klicken Sie auf der Testseite auf GetTemperature. Sie gelangen hierdurch auf eine zweite Seite, in der Sie den US-ZIP-Code des Ortes eingeben können, von dem Sie die aktuelle Temperatur wissen möchten. Geben Sie hier 20000 ein und bestätigen Sie mit Invoke (siehe Bild 5).
Es erscheint eine weitere Web-Seite, die das Ergebnis in Form einer XML-Datei anzeigt (siehe Bild 6).
Das Ergebnis wird in Fahrenheit ausgegeben.
Nachdem Sie nun den ersten Test mit einem Web-Service durchgeführt haben, soll nun eine Verbindung zu Google hergestellt werden. Zu diesem Zweck klicken Sie in dem Startbildschirm des Web-Service-Toolkits auf Webdienst-URL und geben folgende URL ein (siehe Bild 7). Beachten Sie dabei Groß- und Kleinschreibung:
http://api.google.com/GoogleSearch.wsdl
Dieser Link zeigt auf eine WSDL-Datei (Web Service Definition Language), die den Aufbau und die Struktur des Web-Services beschreibt. Hier ist beispielsweise hinterlegt, welche Parameter zur Suche in Google erforderlich sind und wie das Suchergebnis strukturiert ist.
Klicken Sie nach der Eingabe auf Suchen und warten Sie, bis der Web-Service in der rechten oberen Liste erscheint. Hier kreuzen Sie den Web-Service an und klicken anschließend auf Hinzufügen (siehe Bild 8).
Access liest nun die WSDL-Datei ein und erstellt daraus automatisch eine Reihe von Klassen-modulen in Ihrer Datenbank, welche die Kommunikation mit dem Web-Service übernehmen. Diese Klassen werden auch als Proxies bezeichnet. Sie erzeugen unter Access das Objektmodell, das dem des Web-Service von Google entspricht und ermöglichen so eine einfache Nutzung von Access aus.
Bild 8: Auswahl des Google Web-Service
Hinweis
Nach der Anlage sollten Sie alle Proxy-Klassen speichern. übernehmen Sie hierbei die von dem Web-Service-Toolkit vorgegebenen Namen.
Um nun sicherzustellen, dass der Web-Service korrekt aufgerufen werden kann, legen Sie in dem neuen Modul die folgende Testprozedur an:
Sub Test() Const c_Key = "GOOGLEKEY" Dim GoogleService As New _ clsws_GoogleSearchService GoogleService.wsm_doGoogleSearch _ c_Key, "Access", 1, 10, False, _ "", True, "", "", "" End Sub
Beachten Sie hierbei, dass Sie anstelle von GOOGLEKEY den Schlüssel angeben, den Sie von Google erhalten haben. Danach starten Sie die Prozedur, indem Sie beispielsweise im Direktfenster den Ausdruck Test eingeben.
Direkt nach dem Start legt die Prozedur eine neue Instanz des Objekts clsws_GoogleSearchService an. Hierbei handelt es sich um das Haupt-Objekt des Web-Services, das vom Web-Service-Toolkit automatisch angelegt wurde. Anschließend erfolgt der Start des Suchvorgangs. In diesem Beispiel wird nach dem Stichwort Access gesucht. Die Bedeutungen der einzelnen Parameter entnehmen Sie der Tabelle 1. Eine vollständige Beschreibung der Parameter finden Sie in der Referenz des Google SDKs, das Sie ebenfalls auf der Google-Seite herunterladen können.
Parameter |
Funktion |
Key |
Ihr Schlüssel |
Q |
Der Suchbegriff. Hierbei können Sie die von Google her bekannten Suchausdrücke mit AND, OR, “+” und “-” verwenden. |
Start |
Index des ersten Ergebnisses |
maxResults |
Maximale Anzahl der Ergebnisse. Diese ist auf 10 begrenzt. Indem der Service jedoch mehrmals hintereinander mit anderen Start-Indizes aufgerufen wird, können jedoch bis maximal 1000 Suchergebnisse pro Tag abgerufen werden. |
Filter |
Er bestimmt, ob ähnliche Seiten des gleichen Hosts ausgeblendet werden sollen. |
Restrict |
Hiermit kann das Suchergebnis beispielsweise auf bestimmte Länder eingeschränkt werden. |
safeSearch |
Filtert Inhalte für Erwachsene aus dem Suchergebnis. |
Lr |
Limitiert das Suchergebnis auf eine bestimmte Sprache. |
Ie |
Dieser Parameter ist für spätere Zwecke reserviert. Er hat momentan noch keine Funktion. |
oe |
Dieser Parameter ist ebenfalls reserviert. Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ... Testzugang eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel diesen und alle anderen Artikel mit dem Jahresabo |