Lade...
 

Internet

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:

Var(winhttp)
CreateTransObject(CX_COM_OBJECT) -> winhttp
"WinHttp.WinHttpRequest.5.1" winhttp Call(CreateFromProgID)

Hier wird das COM-Objekt erzeugt und dann als WinHTTP initialisiert.

"GET" "http://www.classix.de" FALSE winhttp Call(Open)
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(GetStatus) "200" = if {
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

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.

Var(deserializer, response)
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