Beschreibung eines Clients zur Umwandlung zu XML
Dieser Client verbindet sich über eine Socket-Verbindung mit dem AdisServer beim Landeskontrollverband Westfalen-Lippe
und sendet einen Anmeldestring (beginnt mit ?AN) und dann die Zeilen einer AdisDatei (ADISDATEI.ads).
Im Anmeldestring wird als SCHREIBOBJEKT XML gewählt, wodurch der Server die Daten in XML zurückgibt. Weiterhin werden im
Programm nur die Zeilen, welche mit XML beginnen ausgegeben (der Server schickt noch weitere Kommentarzeilen, die hier
aber unterdrückt werden sollen).
Als Ergebnis sendet der Server die ErgebnisZeilen.
Es werden keine weiteren Klassen des LKVs benötigt. Dieses Programm ist mit einer Standard-JavaInstalltion lauffähig.
Im Beispiel werden die Daten aus dem Ergebnis der Query-Abfrage des DataDictionries verwendet.
Die Ausgaben erfolgen auf der Konsole und können mit
folgendem Aufruf in eine Datei umgeleitet werden:
java microAdisClient > DATEINAME_XML.ads
Der Quellcode:
/** * Title: microAdisClient.java * Description: micro Client showing how to cummunicate with AdisServer via SocketConnction * Copyright: Copyright (c) 2003 * Company: Landeskontrollverband Westfalen-Lippe www.lkv-wl.de * @author Andreas Glahn * @version 1.0 */
import java.net.*; import java.io.*;
public class microAdisClient{ public static void main(String[] args){ Socket theSocket; DataInputStream empfangsDatenStream; PrintStream sendeDatenStream; BufferedReader EingabeDatei = null; String Line; String EingabeZeile = ""; String filename="ADISDATEI.ads"; try { EingabeDatei = new BufferedReader(new FileReader(filename)); } catch (IOException e){ System.out.println("Fehler beim öffnen von " + filename+"."); } try { theSocket = new Socket("www.lkv-wl.de",1502); empfangsDatenStream = new DataInputStream(theSocket.getInputStream()); sendeDatenStream = new PrintStream(theSocket.getOutputStream()); /* Anmeldung und Ausgabe nach XML definieren*/ sendeDatenStream.println("?AN:BENUTZER=GAST;PASSWORT=GAST;PROJEKT=lkv;LESEDB=LKVDB.ADISINT;ADISDB=LKVDB.ADISINT;SCHREIBEN=XML;"); /* ServerAntwort */ String eingeleseneZeile = null; eingeleseneZeile = empfangsDatenStream.readLine(); if (eingeleseneZeile != null){ /* AnmeldeZeile soll nicht ausgegeben werden */ // System.out.println(eingeleseneZeile); }
/* XML Header schreiben */ // hier evtl. Beginn und Ende des String mit spitzen Klammern versehen System.out.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"); System.out.println("<LKVAdisXML>"); /* Die einzelnen Zeilen der Eingabedatei an den Server übergeben und die ErgebnissZeilen abfragen */ while (EingabeZeile != null){ try{ EingabeZeile = EingabeDatei.readLine(); /* Zeile an den Server übregeben */ sendeDatenStream.println(EingabeZeile); /* Daten empfangen */ boolean transakt_beendet = false; while (!transakt_beendet){ eingeleseneZeile=empfangsDatenStream.readLine(); /* Filtern auf XML Rückgabe */ if (eingeleseneZeile.startsWith("XML")) { // XML: nicht mitausgeben, deshalb erst ab Position 4 System.out.println(eingeleseneZeile.substring(4)); } if (eingeleseneZeile != null){ if (eingeleseneZeile.startsWith("T")|| eingeleseneZeile.startsWith("tE") ) transakt_beendet = true; if (eingeleseneZeile.startsWith("ZN")|| eingeleseneZeile.startsWith("null") ) transakt_beendet = true; if (eingeleseneZeile.equals("tN")) eingeleseneZeile = "TN"; } else { transakt_beendet = true; } } } catch (IOException e){ System.out.println("Fehler beim lesen der Datei bzw. bei der Datenübertragung."); } } /* XML-Datei beenden */ // hier evtl. Beginn und Ende des String mit spitzen Klammern versehen System.out.println("</LKVAdisXML>"); /* Beenden der Verbindung */ sendeDatenStream.println("ZN"); theSocket.close(); } catch (IOException e){ System.err.println(e); } try{ EingabeDatei.close(); } catch (IOException e){ System.out.println("Fehler beim Schließen der Datei."); } } }
Ausführen von Querys beim LKV WL Abfragen mit einem Client
|