• Keine Ergebnisse gefunden

12. Praktikum – AJAX, JSON und Webservices

N/A
N/A
Protected

Academic year: 2022

Aktie "12. Praktikum – AJAX, JSON und Webservices"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Fakultät Informatik/Mathematik Internettechnologien für Geoinformatik/Management

Prof. Dr.-Ing. habil. P. Sobe

12. Praktikum – AJAX, JSON und Webservices

Aufgabe1: AJAX, JSON-Kommunikation

Im Praktikum wird eine AJAX-basierte Anwendung programmiert, die ihre Nachrichten mittels JSON kodiert und austauscht. Dafür wird eine Datenstruktur als Array auf der Client-Seite in JavaScript angelegt, danach in eine JSON-Zeichenkette umgewandelt und an den Server gesendet. Der Server führt ein PHP-Skript aus, das eine JSON-kodierte Datenstruktur zurücksendet.

Die Eingabedatenstruktur ist ein Array aus Punkten mit einer Bezeichnung, einer x- Position und einer y-Position. Das Server-Skript soll daraus eine Entfernungsmatrix mit dem euklidischen Abstand der Punkte berechnen.

Teilaufgaben:

a) Installieren Sie die vorbereiteten Dateien ajaxpunkte.html und entfernungen.php im Installationsverzeichnis Ihres Webservers!

Machen Sie sich mit der Übertragung der Daten als JSON-kodierte Zeichenketten vertraut!

b) Erweitern Sie das Skript entfernungen.php um die Berechnung der Entfernungen zwischen allen Punkten!

d) Geben Sie die Entfernungen als JSON-Zeichenkette aus dem PHP-Skript zurück (anstatt der Eingabedaten)!

e) Erzeugen Sie auf der Client-Seite die Ergebnis-Datenstruktur und geben Sie diese auf der Webseite aus. Dazu wurde ein Element mit dem Namen

„earraytext“ vorbereitet, das in der Vorlage für ajaxpunkte.html mit der vom Server zurückgesendeten JSON-Zeichenkette gefüllt wird. Den Text in

„earraytext“ sollten Sie später für eine sinnvoll formatierte Auflistung der Punktpaare mit den Entfernungen verwenden.

(2)

Fakultät Informatik/Mathematik Internettechnologien für Geoinformatik/Management

Prof. Dr.-Ing. habil. P. Sobe

Aufgabe2: Webservices per SOAP und per REST

Ihnen werden zwei Server-Skripte in PHP bereitgestellt die einen Webservice mittels SOAP und mittels REST implementieren. Es handelt sich dabei um die Koordinatentransform, die Sie bereits in der flightinfo-Webanwendung benutzt haben.

Teilaufgaben:

a) Installieren Sie soap_server.php, rest_server.php und Slim.zip (als entpacktes Verzeichnis) im Publikationspfad Ihres Webservers (XAMPP)!

b) Ersetzen Sie in einer ersten Erweiterung Ihrer flightinfo-Webanwendung die lokalen Aufrufe der Funktion koordtransform() durch den folgenden PHP- Programmausschnitt:

// $xpos und $ypos aus $gbr und $gln berechnen

// Koordinatentransformation durch einen SOAP-Webservice

$xypos=json_decode($client->__soapCall("koordtransform", array($gbr, $gln), true);

$xpos=$xypos[0];

$ypos=$xypos[1];

Vor dem ersten Webservice Aufruf ist der SoapClient (Variable client) wie folgt zu erzeugen:

$client = new SoapClient(NULL, array(

"location" => "http://localhost/... /soap_server.php", "uri" => "urn:D1",

"style" => SOAP_RPC,

"use" => SOAP_ENCODED ));

Sie können die Quelltextteile aus der Datei webservice_client_codesnippets.txt als s.g. Code-Schnipsel entnehmen und an Ihre Web-Anwendung anpassen.

Insbesondere der Pfad in Zeile 3 oben muss entsprechend Ihrer lokalen Installation angepasst werden.

Führen Sie die Webanwendung durch Neuladen aus und überprüfen Sie, ob die Positionen auf der Karte richtig dargestellt werden!

Sie haben damit einem SOAP-Webservice für die Koordinatentransformation genutzt.

Aufgabe c) folgt umseitig.

(3)

Fakultät Informatik/Mathematik Internettechnologien für Geoinformatik/Management

Prof. Dr.-Ing. habil. P. Sobe

c) Ersetzen Sie in einer zweiten Erweiterung Ihrer flightinfo-Webanwendung die lokalen Aufrufe der Funktion koordtransform() durch den folgenden PHP- Programmausschnitt:

// $xpos und $ypos aus $gbr_start und $gln_start berechnen // Koordinatentransformation durch einen REST-Webservice

$url=sprintf('http://localhost/…/rest_server.php/koordtransform?gln=%f\&gbr=

%f',$gln,$gbr);

$xypos=json_decode(loadURL($url));

$xpos=$xypos[0];

$ypos=$xypos[1];

Auch hier können Sie Code-Schnipsel aus der Datei webservice_client_codesnippets.txt benutzen. Der Pfad in Zeile 3 muss entsprechend Ihrer lokalen Installation angepasst werden.

Die Funktion loadURL ist dazu wie folgt in Ihr PHP-Skript zu übernehmen:

// loadURL aus http://www.php-kurs.info/tutorial-webseiten_auslesen.html function loadURL($url)

{

$agent = "Meine Browserkennung v1.0 :)";

$header[] = "Accept: text/vnd.wap.wml,*.*";

$ch = curl_init($url);

if ($ch) {

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT, $agent);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$tmp = curl_exec ($ch);

curl_close ($ch);

}

return $tmp;

}

Führen Sie die Webanwendung durch Neuladen aus und überprüfen Sie, ob die Positionen auf der Karte richtig dargestellt werden!

Sie haben damit einem REST-Webservice für jede einzelne Koordinatentransformation genutzt.

Referenzen

ÄHNLICHE DOKUMENTE

• Die Klasse List erh¨ alt eine Methode add, die einen int entgegennimmt um ein neues Element zu erzeugen und an das Ende der Liste anzuf¨ ugen. Beachten Sie dabei die Referenzen

Außerdem wird die Liste der Sprecher angepasst, da nur jene angezeigt werden sollen, die auch tats¨ achlich die ausgew¨ ahlte Sprache sprechen... Neben der Sprache kann auch

JSON-Daten, die aus einer Datei gelesen werden, können nicht als wohlgeformt

die Abfrage von Informationen aus einer Datenbank, oder das Lesen von Daten aus einer Datei und eine anschließende Formatierung erfolgen. Mit AJAX wird oft eine Kombination

In diesem Praktikum soll die flightinfo-Webanwendung aus den bisherigen Praktika mit interaktiven Bedienmöglichkeiten erweitert werden. Die Daten zu Orten und Flugverbindungen

Als XML-Datei soll eine der verfügbaren Wettermeldungen-Dateien verwendet werden. Die XML-Daten können als Objekt von responseXML entnommen werden. b) Werten Sie das

b) Starten Sie das Serverskript flightpos_server.php über die XAMPP-Shell! Dazu muss php.exe mit dem auszuführenden Skript als Argument angegeben werden. Der Start muss aus

I Viele Operationen normaler Listen vorhanden:.. I Was ist der parameter