Schnittstellen zum Internet
Zugriff auf das Internet und seine verschiedenen Protokolle und Datenformate von ClassiX® aus kann mit Hilfe einiger COM-Objekte realisiert
werden. Diese werden im Folgenden kurz vorgestellt, einhergehend mit einigen
Beispielen.- WinHTTP - HTTP Schnittstelle der Windows Betriebssysteme
- WDDX - Schnittstelle für einfachen Datenaustausch zwischen Webanwendungen
- SMTP - Senden von E-Mails über die SMTP-Schnittstelle (ohne Outlook)
WinHTTP
Offizielle Dokumentation von Microsoft
Die WinHTTP-Schnittstelle von Windows bietet, wie der Name schon sagt,
Zugriff auf das HTTP-Protokoll. Dieses kann so verwendet werden, um beliebige Dateien aus dem Internet herunter zuladen (z.B. zur Aktualisierung von Daten) oder generell um jede Art von Internetseite irgendwie zu benutzen. Die
Verwendung ist denkbar einfach:CreateTransObject(CX_COM_OBJECT) -> winhttp
"WinHttp.WinHttpRequest.5.1" winhttp Call(CreateFromProgID)
Hier wird das COM-Objekt erzeugt und dann als WinHTTP initialisiert.
winhttp Call(Send)
Jetzt wird die zu öffnende Adresse an WinHTTP übergeben, der erste Parameter
("GET") steuert, welche Art des HTTP-Request (GET oder POST) verwendet werden soll, danach folgt die Adresse und der letzte Parameter gibt an, ob der Aufruf asynchron erfolgen soll. Hier sollte immer FALSE übergeben werden und somit der synchrone Aufruf benutzt werden. Mit dem Aufruf von Send wird dann der eigentlich Request abgesendet. Im synchronen Modus kehrt die Send-Methode erst wieder zurück, wenn ein Ergebnis des Requests feststeh. Im asynchronen Fall geht es sofort weiter, d.h. man kann sich im weiteren Verlauf nicht sicher sein, ob schon Daten vorliegen oder nicht. Daher sollte, wie oben schon beschrieben, der
synchrone Modus verwendet werden.winhttp Call(GetResponseText)
...
}
Mit einer Statusabfrage kann nun geprüft werden, ob der HTTP-Request
erfolgreich war. Hier werden die in RFC 2616 spezifizierten HTTP-Status-Codes zurückgeliefert. Mit der Methode GetResponseText kann dann das Ergebnis als
String geholt werden und eine Weiterverarbeitung erfolgen.Beispiele
- Aktualisierung der Währungstabelle
- Onlineprüfung von USt-IdNr.
WDDX
Offizielle Dokumentation findet sich im SDK von OpenWDDX.org
Bei WDDX handelt es sich um ein XML-Basiertes Datenformat um den
Datenaustausch speziell zwischen Webanwendungen zu vereinfachen. Es finden sich im Internet diverse Webanwendungen, welche eine WDDX Schnittstelle anbieten um somit ihre Funktionalität zur Verfügung zu stellen. Dabei werden Anfragen an die Webanwendung meist als ganz normaler HTTP-Request gesendet und die Antwort erfolgt dann als WDDX-kodierter Datenstrom. Um solche Webanwendungen aus ClassiX® heraus nutzen zu können, kann die WDDX Schnittstelle über ein frei verfügbares COM-Objekt genutzt werden. Die eigentliche Kommunikation auf HTTP-Ebene kann mit
der oben beschriebenen WinHTTP Schnittstelle erfolgen.CreateTransObject(CX_COM_OBJECT) -> deserializer
"WDDX.Deserializer" deserializer Call(CreateFromProgID)
Hier wird das COM-Objekt erzeugt und dann als WDDX Deserializer initialisiert.
winhttp Call(GetResponseText) deserializer Call(deserialize) -> response
Hier wird von einer bereits erfolgten Abfrage über WinHTTP die Antwort geholt
und dann mit Hilfe der WDDX Schnittstelle in eine leicht weiterverarbeitbare
Antwort umgewandelt."datum" response Call(getProp)
Über eine Methode des Antwort-Objekts kann dann auf die einzelnen Datenfelder zugegriffen werden. Welche Namen diese tragen ist von der jeweiligen Webanwendung abhängig und sollte in der Dokumentation zu der Anwendung beschrieben sein.
Beispiele
- Onlineprüfung von USt-IdNr.