Wenn Sie in Ihren Anwendungen Webservices ansprechen, dann werden Sie auf das Thema URL-Encoding stoßen, denn eine URL muss mit einer bestimmten Zeichen-codierung übergeben werden. Wenn das per Hand programmiert werden muss, ist das sehr aufwändig. In diesem Beitrag erfahren Sie, wie das mit SQL ab V7R1 auf einfache Weise gelöst werden kann.

Als Beispiel für die Demonstration des URL-Encoding wird der Webservice von Google Maps genutzt und die ehemalige Adresse des ITP-Verlags genommen:

Viktor-Frankl-Straße 20, 86916 Kaufering

Um die Codierung auf einfache Weise erreichen zu können, muss entweder mit STRSQL eine interaktive Sitzung am grünen Bildschirm gestartet oder über den Operations Navigator gearbeitet werden, und es muss folgender Befehl eingegeben werden:

values (systools.urlencode ('Viktor-Frankl-Straße 20, 86916 Kaufering', 'UTF-8'))

Das Ergebnis ist die codierte Adresse:

Viktor-Frankl-Stra%C3%9Fe+20%2C+86916+Kaufering

Diese wird für die weitere Arbeit genutzt. Der zweite Parameter ist der Zeichensatz. Hier wird UTF-8 verwendet, der häufigste Zeichensatz für Webservices.

Wer diese Funktion in seinen RPG-Anwendungen nutzen möchte, für den sieht das Statement wie folgt aus:

Dcl-S String varchar(100);

String = 'Viktor-Frankl-Straße 20, 86916 Kaufering';

Exec SQL Set :String = systools.urlencode(:String,'UTF-8');

Der nächste Schritt ist die Formulierung des Statements für das Ansprechen des Google-Maps-Webservices. Sicherlich ist dieses Thema in früheren TechKnowLettern schon ausführlich dargestellt worden, weshalb es hier nicht näher beschrieben werden soll.

Das Statement sieht so aus:

SELECT SYSTOOLS.HTTPGETCLOB(

'https://maps.googleapis.com/maps/api/geocode/xml?address=' concat

systools.urlencode('Viktor-Frankl-Straße 20, 86916 Kaufering','UTF-8') concat

'&components=country:DE',’’

)

From SYSIBM.SYSDUMMY1;

Das Ergebnis ist ein XML-String, der sich in eine Datei kopieren lässt. Man könnte das Statement auch in ein RPG-Programm einbinden und per SQL ins IFS schreiben oder mit der RPG-Funktion XML-INTO die Daten in einzelne Felder schreiben. Auch hierzu finden sich Beispiele in früheren TechKnowLettern.

Generell ist es möglich, auf diese Weise eine einfache Adressprüfung, die falsch geschriebene Ortsnamen, Straßennamen oder falsche Postleitzahlen erkennt, durchzuführen. Allerdings hat Google eine kostenfreie Quote von 2.500 Zugriffen pro Tag. Bei mehr Zugriffen wird es kostenpflichtig.

Die XML-Daten enthalten auch die Längen- und Breitengrade der Adresse. Daraus lassen sich Entfernungen berechnen, oder man könnte die Kundendaten in einer Anwendung über Google Maps anzeigen.

Ein Beispiel ist die Anwendung:

www.myhofi.com/devhtm/sidebar.htm -> Kunden -> Google Maps

Die XML-Datei sieht folgendermaßen aus. Sie enthält viele interessante Informationen.