Im diesem ZIP-Archiv befindet sich die Wireshark-Aufzeichnung zu Kapitel 4.7 mit der Kommunikation zwischen Webbrowser und Webserver beim Aufruf einer Webseite.
Im diesem ZIP-Archiv befindet sich die Wireshark-Aufzeichnung zu Kapitel 4.7 mit der Kommunikation zwischen Webbrowser und Webserver beim Aufruf einer Webseite.
Das Begleitmaterial zu Kapitel 4.8 umfasst das Java-Programm SiemensAnmeldungAbruf für den Zugriff auf den Webserver einer SPS, sowie die HTML-Dokumente Zaehler.html, über welches sich der Zählerstand setzen und ändern lässt und Zaehlerzusatz.html, in welchem der Zählerstand steht.
Der Ablauf des Programms beginnt mit der Übermittlung von Benutzername und Passwort mittels einer POST-Anfrage, anschließend wird das Dokument Zaehlerzusatz.html vom Webserver abgerufen und der Zählerstand extrahiert.
Desweiteren befindet sich zur Ergänzung im ZIP-Archiv die Wireshark-Aufzeichnung der Kommunikation mit dem SPS-Webserver und das SPS-Projekt 1513_Buch_Plenk_2_WWW.zap13, welches eine Variable im Sekundentakt hochzählt. Das Dokument Zaehlerzusatz.html aktualisiert sich ebenfalls sekündlich und zeigt daher immer den aktuellen Zählerstand an.
Der Inhalt dieses ZIP-Archivs zu ist identisch mit dem von Kapitel 5.7 (SPS Webserver Teil 2).
Die folgenden Beispielseiten mit unterschiedlichen Funktionalitäten dienen zur Beobachtung und Verfolgung einer Datenübertragung zwischen Server und Webbrowser.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; // Demoprogramm für Anmeldung am Siemens Webserver und Abruf des Zählerstandes public class SiemensAnmeldungAbruf { public static void main(String[] args) throws ClientProtocolException, IOException, URISyntaxException { // HTTP-Client für die Abfragen erzeugen CloseableHttpClient httpclient = HttpClients.createDefault(); //========================== // Anmelden durch POST des Passworts System.out.println("=====================\nPOST Login"); HttpPost httpPost = new HttpPost("http://10.50.80.18/FormLogin.php"); Listnvps = new ArrayList (); nvps.add(new BasicNameValuePair("Login", "student")); nvps.add(new BasicNameValuePair("Password", "geheim")); httpPost.setEntity(new UrlEncodedFormEntity(nvps)); CloseableHttpResponse response1 = httpclient.execute(httpPost); System.out.println(response1.getStatusLine()); HttpEntity entity1 = response1.getEntity(); // Antwort ist irrelevant und wird deswegen nicht gelesen EntityUtils.consume(entity1); response1.close(); //=================== // GET der benutzerdefinierten Webseite (nach Anmeldung) System.out.println("=====================\nGET nach Anmeldung"); HttpGet httpGet = new HttpGet("http://10.50.80.18/awp/Zaehler/Zaehlerzusatz.html"); response1 = httpclient.execute(httpGet); System.out.println(response1.getStatusLine()); entity1 = response1.getEntity(); InputStream httpStream = entity1.getContent(); InputStreamReader httpStreamReader = new InputStreamReader(httpStream); BufferedReader httpBufferedReader = new BufferedReader(httpStreamReader); // Zeile mit dem Zählerstand suchen String httpLine; while((httpLine = httpBufferedReader.readLine()) != null) { if(httpLine.contains("Zählerstand:")) { // die eigentlichen Ziffern aus der Zeile ausschneiden int startZaehler = httpLine.indexOf("Zählerstand:") + "Zählerstand:".length(); int endeZaehler = httpLine.indexOf("") - 1; String standAlsString = httpLine.substring(startZaehler, endeZaehler); standAlsString = standAlsString.trim(); // und in int umwandeln int zaehlerstand = Integer.parseInt(standAlsString); System.out.println("Zaehlerstand: " + zaehlerstand); } } httpBufferedReader.close(); EntityUtils.consume(entity1); response1.close(); } }