Deutsche Version English Version
Das COM-Objekt "ASPHTM" kann beliebige HTTP-Objekte (also zum Beispiel ASP-Dateien) lesen und auf dem Server lokal speichern, oder eine Verbindung zu einem FTP-Server aufbauen und dort die Datei speichern. Diese Komponente eignet sich also hervorragend zum lokalen Speichern von dynamischen Seiten.
Das COM-Objekt befindet sich in einer dynamischen Bibliothek (DLL, Dynamic Link Library). Diese DLL muß nur einmal auf dem Server registriert werden, und schon kann sie von den verschiedensten Skript- und Programmiersprachen auf einfachste Weise benutzt werden, wie zum Beispiel von Visual Basic, Visual C++, Visual J++, ASP/VB-Skript, Windows Skripting Host.
Erfolgreich getestet wurde die Komponente unter folgender Konfiguration: Windows NT Workstation/Server 4.0, SP 4-6, Windows 2000 Professional und Server, Internet Information Server 4.0 und 5.0, Microsoft Personal Web Server.
Boolean
WriteToFile (String Inputfile, String FormData, String OutputFile); |
Die HTTP-Datei Inputfile (vollständiger URL) wird gelesen und auf dem Server unter den in Outputfile angegebenen Namen gespeichert. Der Parameter FormData kann eventuelle Post-Variablen enthalten, die dem Server beim Laden der Inputfile übergeben werden (zum Format siehe unten). Der Rückgabewert gibt an, ob der Aufruf erfolgreich war. Wird FALSE zurückgegeben, so beeinhalten ErrorCode und ErrorString die Fehlerinformationen. |
String
WriteToString (String Inputfile, String FormData); |
Die HTTP-Datei Inputfile (vollständiger URL) wird gelesen und als String zurückgegeben. Der Parameter FormData kann eventuelle Post-Variablen enthalten, die dem Server beim Laden der Inputfile übergeben werden (zum Format siehe unten). ErrorCode gibt an, ob der Aufruf erfolgreich war. |
String
WriteToStringHTTPS (String Inputfile, String FormData); |
Gleiche Arbeitsweise wie WriteToString, nur mit der Erweiterung, daß HTTPS-Objekte gelesen werden können. |
Variant
WriteToSaveArray (String Inputfile, String FormData); |
Die HTTP-Datei
Inputfile (vollständiger URL) wird gelesen und das Ergebnis in
einem Byte-Array zurückgegeben. Zur Benutzbarkeit in ASP wurde
der Rückgabetyp als VARIANT (VT_ARRAY | VT_UI1) gewählt. Das Bytearray
besitzt kein abschließendes Nullzeichen. Im Fehlerfall enthält das Array
nur ein einzelnes Nullelement. Der Parameter FormData kann eventuelle Post-Variablen enthalten, die dem Server beim Laden der Inputfile übergeben werden (zum Format siehe unten). ErrorCode gibt an, ob der Aufruf erfolgreich war. |
Boolean
WriteToFTP (String Inputfile, String Outputfile, String FormData, Boolean Anonymous, String Username, String Password); |
Die HTTP-Datei Inputfile (vollständiger URL) wird gelesen und in die FTP-Datei Outputfile geschrieben. Hierbei ist zu beachten, daß der Parameter Outputfile einen vollständigen FTP-Pfad enthalten muß. Der Parameter Anonymous gibt an, ob die Anmeldung an den FTP-Server anonym erfolgen soll. Ist Anonymous = TRUE, so werden die Parameter Username und Password ignoriert. Der Parameter FormData kann eventuelle Post-Variablen enthalten, die dem Server beim Laden der Inputfile übergeben werden (zum Format siehe unten). Der Rückgabewert der Methode gibt an, ob der Aufruf erfolgreich war. Wird FALSE zurückgegeben, so beeinhalten ErrorCode und ErrorString die Fehlerinformationen. |
Boolean Execute |
Die HTTP-Datei Inputfile (vollständiger URL) wird gelesen, der Inhalt wird aber nicht gespeichert oder zurückgegeben. Der Parameter FormData kann eventuelle Post-Variablen enthalten, die dem Server beim Laden der Inputfile übergeben werden (zum Format siehe unten). Diese Methode eignet sich zum Aufruf von ASP-Seiten, die nichts zurückgeben. |
String
GetHeader (String URL, Long HeaderType Long HeaderIndex); |
Von der angegebenen URL
wird der in HeaderType angegegebene Teil des Header gelesen und als String
zurückgegeben. (Mögliche Konstanten für HeaderType siehe unten.)
HeaderIndex gibt dabei den Index des zu lesenden Headers an
(0-basiert). Anwendungsfall: Soll beispielsweise ein Link auf Gültigkeit überprüft werden, so kann dies wie folgt geschehen: Der Aufruf GetHeader("http://www.netcomplett.de/not-exist.htm") liefert den String "404" zurück (File not found). |
String
GetCustomHeader (String URL, String HeaderName Long HeaderIndex); |
Von der angegebenen URL wird in HeaderName angegebene Header gelesen und als String zurückgegeben. HeaderIndex gibt dabei den Index des zu lesenden Headers an (0-basiert). |
AddRequestHeaders (String Headers, short Flag); |
Diese Methode setzt
Headerdaten, die bei jedem nachfolgenden Abruf von HTTP-Objekten
an den Server übergeben werden. Der Flag-Parameter steuert die
Wirkungsweise der Headerdaten: Flag = 0: Fügt die neuen Header zu und ersetzt notfalls bestehende gleichnamige Header (Standardwert) (HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD) Flag = 1: Fügt Headerdaten nur hinzu, es werden keine bestehende Headerdaten ersetzt.(HTTP_ADDREQ_FLAG_ADD) Flag = 2: Fügt Headerdaten nur dann hinzu, wenn sie neu sind. (HTTP_ADDREQ_FLAG_ADD_IF_NEW) |
ResetAllRequestHeaders (); |
Setzt die in AddRequestHeader gesetzten Headerinformationen zurück auf die Standardwerte, das Flag wird wieder auf 0 gesetzt. |
Boolean ChangeProxySettings (Integer ProxyType, String ProxyAddress, String ProxyBypass); |
Definiert, ob die Verbindungen zum Internet durch einen Proxyserver erfolgen sollen. ProxyType kann einen der folgenden Werte annehmen: 0 (Proxyeinstellungen werden aus Registry gelesen, identisch mit Einstellungen im Internet Explorer 4.0), 1 (direkte Verbindung zum Internet), 2 (Verbindung über einen Proxyserver aufbauen). Ist ProxyType = 0 oder 1, so sind die letzten beiden Parameter ohne Bedeutung. Im Falle ProxyType = 2 gibt ProxyAddress den vollständigen Namen / die IP-Adresse des Proxyservers an, eventuell mit Port, und ProxyBypass enthält eine Liste von Adressen, für die kein Proxyserver verwendet wird (Trennung durch Semikolon). Wird diese Methode nicht aufgerufen, so werden die Einstellungen aus der Registry genutzt (ProxyType = 0). |
SetAgentName (String NewAgentName); |
Diese Methode setzt den Agentnamen (Browserbezeichnung), den die Komponente beim Lesen von allen weiteren HTTP-Objekten angibt. Der Standardwert ist ASPHTM. |
ErrorCode (Long) | Stellt den Fehlercode des letzten Methodenaufrufs dar (0 = Kein Fehler). |
ErrorString (String) | Stellt die Fehlerbeschreibung des letzten Methodenaufrufs dar. |
In allen Methoden muß der Parameter FormData
URL-Encoded übergeben werden. Sollen beispielsweise die folgenden drei Parameter
mittels POST an Inputfile übergeben werden, so ist für FormData der
folgende String anzugeben:
name= "netcomplett", address = "Fiete
Schulze", etc = "K&L"
FormData: "name=netcomplett&address=Fiete+Schulze&etc=K%26L"
Konstante | Wert | Konstante | Wert |
HTTP_QUERY_MIME_VERSION | 0 | HTTP_QUERY_ACCEPT | 24 |
HTTP_QUERY_CONTENT_TYPE | 1 | HTTP_QUERY_ACCEPT_CHARSET | 25 |
HTTP_QUERY_CONTENT_TRANSFER_ENCODING | 2 | HTTP_QUERY_ACCEPT_ENCODING | 26 |
HTTP_QUERY_CONTENT_ID | 3 | HTTP_QUERY_ACCEPT_LANGUAGE | 27 |
HTTP_QUERY_CONTENT_DESCRIPTION | 4 | HTTP_QUERY_AUTHORIZATION | 28 |
HTTP_QUERY_CONTENT_LENGTH | 5 | HTTP_QUERY_CONTENT_ENCODING | 29 |
HTTP_QUERY_CONTENT_LANGUAGE | 6 | HTTP_QUERY_FORWARDED | 30 |
HTTP_QUERY_ALLOW | 7 | HTTP_QUERY_FROM | 31 |
HTTP_QUERY_PUBLIC | 8 | HTTP_QUERY_IF_MODIFIED_SINCE | 32 |
HTTP_QUERY_DATE | 9 | HTTP_QUERY_LOCATION | 33 |
HTTP_QUERY_EXPIRES | 10 | HTTP_QUERY_ORIG_URI | 34 |
HTTP_QUERY_LAST_MODIFIED | 11 | HTTP_QUERY_REFERER | 35 |
HTTP_QUERY_MESSAGE_ID | 12 | HTTP_QUERY_RETRY_AFTER | 36 |
HTTP_QUERY_URI | 13 | HTTP_QUERY_SERVER | 37 |
HTTP_QUERY_DERIVED_FROM | 14 | HTTP_QUERY_TITLE | 38 |
HTTP_QUERY_COST | 15 | HTTP_QUERY_USER_AGENT | 39 |
HTTP_QUERY_LINK | 16 | HTTP_QUERY_WWW_AUTHENTICATE | 40 |
HTTP_QUERY_PRAGMA | 17 | HTTP_QUERY_PROXY_AUTHENTICATE | 41 |
HTTP_QUERY_VERSION | 18 | HTTP_QUERY_ACCEPT_RANGES | 42 |
HTTP_QUERY_STATUS_CODE | 19 | HTTP_QUERY_SET_COOKIE | 43 |
HTTP_QUERY_STATUS_TEXT | 20 | HTTP_QUERY_COOKIE | 44 |
HTTP_QUERY_RAW_HEADERS | 21 | HTTP_QUERY_REQUEST_METHOD | 45 |
HTTP_QUERY_RAW_HEADERS_CRLF | 22 | HTTP_QUERY_REFRESH | 46 |
HTTP_QUERY_CONNECTION | 23 | HTTP_QUERY_CONTENT_DISPOSITION | 47 |
HTTP 1.1 defined headers | |||
HTTP_QUERY_AGE | 48 | HTTP_QUERY_IF_RANGE | 58 |
HTTP_QUERY_CACHE_CONTROL | 49 | HTTP_QUERY_IF_UNMODIFIED_SINCE | 59 |
HTTP_QUERY_CONTENT_BASE | 50 | HTTP_QUERY_MAX_FORWARDS | 60 |
HTTP_QUERY_CONTENT_LOCATION | 51 | HTTP_QUERY_PROXY_AUTHORIZATION | 61 |
HTTP_QUERY_CONTENT_MD5 | 52 | HTTP_QUERY_RANGE | 62 |
HTTP_QUERY_CONTENT_RANGE | 53 | HTTP_QUERY_TRANSFER_ENCODING | 63 |
HTTP_QUERY_ETAG | 54 | HTTP_QUERY_UPGRADE | 64 |
HTTP_QUERY_HOST | 55 | HTTP_QUERY_VARY | 65 |
HTTP_QUERY_IF_MATCH | 56 | HTTP_QUERY_VIA | 66 |
HTTP_QUERY_IF_NONE_MATCH | 57 | HTTP_QUERY_WARNING | 67 |
In der Datei ncwebtoy.inc sind diese Konstanten für die Benutzung in ASP vordefiniert.
Beispiel-URL, der Fehler erzeugt | ErrorCode | ErrorString |
htt://www.abc.com | 12006 | Der URL verwendet kein bekanntes Protokoll. |
ftp://xxx.xxx.com | 12007 | Der Servername oder die Serveradresse konnte nicht verarbeitet werden. |
http:\\www.abc.com | 12018 | Der Typ der gelieferten Zugriffsnummer entspricht nicht dem angeforderten Vorgang. |
http://not-existing.com | 12029 | Die Serververbindung konnte nicht hergestellt werden. |
Unberechtigter FTP- Schreibzugriff | 12003 | Zugriff wurde verweigert. |
Aufruf von WriteToFTP mit falschem Username/Password. | 12014 | Das Kennwort war unzulässig. |
Im folgenden werden Beispielquellcodes für die Benutzung der Komponente in den Programmiersprachen Visual Basic, Visual J++, sowie ASP/VB-Skript und Windows Skripting Host. Dabei wird in allen Beispielen jeweils eine HTML-Datei geladen und lokal gespeichert (mittels WriteToFile); anschließend wird eine Datei auf einem FTP-Server gespeichert.
Nachdem über den Menüpunkt Projekt/Verweise die DLL "ncwebtoy.dll" dem Projekt hinzugefügt wurde, kann das COM-Objekt wie folgt benutzt werden:
Dim Konverter As ASPHTM Set Konverter = New ASPHTM Konverter.WriteToFile "http://www.netcomplett.de/index.asp", "", "c:\index.html" Konverter.WriteToFTP "http://www.netcomplett.de/default.html", "ftp://www.netcomplett.de/test.html", "", FALSE, "ftpuser", "ftp_pw"
Über den Menüpunkt Projekt/COM-Wrapper hinzufügen... wird die Datei "ncwebtoy.dll" ausgewählt. Anschließend kann die Komponente wie folgt erzeugt und benutzt werden:
ncwebtoy.ASPHTM Konverter = new ncwebtoy.ASPHTM(); Konverter.WriteToFile("http://pluto/testweb/asphtm.asp", "", "c:\\testqwe.html"); Konverter.WriteToFTP("http://www.netcomplett.de/default.html", "ftp://www.netcomplett.de/test.html", "", FALSE, "ftpuser", "ftp_pw");
<% Set Konverter = Server.CreateObject ("NCWebToy.ASPHTM") Konverter.WriteToFile "http://www.netcomplett.de/index.asp", "", "c:\index.html" Konverter.WriteToFTP "http://www.netcomplett.de/default.html", "ftp://www.netcomplett.de/test.html", "", FALSE, "ftpuser", "ftp_pw" %>
Set Konverter = CreateObject ("NCWebToy.ASPHTM") Konverter.WriteToFile "http://www.netcomplett.de/index.asp", "", "c:\index.html" Konverter.WriteToFTP "http://www.netcomplett.de/default.html", "ftp://www.netcomplett.de/test.html", "", FALSE, "ftpuser", "ftp_pw"
Zur Installation der Komponente sind folgende Schritte nötig:
Von der Komponente werden folgende Standardbibliotheken (Dynamic Link Libraries) des Betriebssystems (hier: Windows NT 4.0) benötigt: Kernel32.dll, User32.dll, Gdi32.dll, Comdlg32.dll, Winspool.drv, Advapi32.dll, Shell32.dll, Comctl32.dll, Oledlg.dll, Ole32.dll, Oleaut32.dll und Wininet.dll.
Mit dem Microsoft Internet Information Server 4.0
wird das in Java geschriebene COM-Objekt "IISSample.Asp2Htm" geliefert. Diese
Komponente besitzt auch die Möglichkeit, dynamische HTTP-Seiten lokal auf dem
Server zu speichern. Der entscheidende Nachteil dieser Komponente ist, daß vor
jeder Benutzung dieses COM-Objektes zuerst die Java Virtual Machine auf dem
Server gestartet werden muß, die dann den Bytecode der Java-Klassendatei
analysiert und ausführt.
Dagegen wird zur Ausführung von ASPHTM 1.4 keine
Virtual Machine benötigt, da die Komponente in kompilierter Form (DLL) vorliegt.
Somit ergeben sich erhebliche Geschwindigkeitsvorteile bei der Benutzung von
ASPHTM 1.4.
Weiterhin besitzt "IISSample.Asp2Htm" nicht die Funktionalität,
Dateien auf einem FTP-Server zu speichern.
Q1. Bei der Benutzung des COM-Objektes tritt die Fehlermeldung "Objekterstellung durch ActiveX-Komponente nicht möglich" auf.
A1. Die Komponente muß im System
registriert werden, z.B. durch den Aufruf "regsvr32 c:\winnt\system32\ncwebtoy.dll", gegebenenfalls muß der Pfad
entsprechend angepaßt werden. Es ist darauf zu achten, daß als Erfolgsmeldung
"DllRegisterServer in asptohtm.dll succeeded." ausgegeben
wird.
Q2. Welche Schritte sind nötig, um die Komponente wieder vollständig aus dem System zu entfernen ? (Windows NT meldet "Der Zugriff wurde verweigert." beim Versuch, die Datei asptohtm.dll zu löschen.)
A2. Die DLL läßt sich nur dann aus
dem System entfernen, wenn sie von keinem laufenden Prozeß mehr benutzt wird.
Zur Deinstallation muß also zuerst sichergestellt werden, daß kein Programm
diese DLL momentan benutzt. Wird die Komponente in einem (serverseitigem)
ASP-Skript verwendet, so muß der Webserver (z.B. Internet Information Server
oder Personal Web Server) eine Instanz dieser Komponente erstellen; die
allerdings nicht sofort freigegeben wird, nachdem alle HTTP-Verbindungen zu
diesem Webserver abgebrochen werden. Somit ist es in Einzelfällen nötig, den
Webserver anzuhalten (z.B. Beenden des IIS-Administrationsdienstes und des
WWW-Publishing-Dienstes). Erst dann werden alle noch vorhandenen Instanzen des
COM-Objektes freigegeben, und die DLL läßt sich aus dem System
entfernen.
Dieses Vorgehen kann immer dann angewendet werden, wenn die
Komponente durch eine neuere Version ersetzt werden soll (Update). Bei diesem
Update-Prozeß ist es nicht nötig, die neue Komponente erneut im System zu
registrieren (mittels regsvr32), wenn sich die neue DLL im gleichen Pfad wie die
alte befindet.
Soll die Komponente dauerhaft aus dem System entfernt werden,
so ist vor dem Löschen die Registrierung im System rückgängig zu machen (mittels
regsvr32 –u c:\winnt\system32\ncwebtoy.dll). Schlägt dieser
Aufruf fehl, so muß die DLL per Hand aus der Registry entfernt werden. Dazu ist
mittels regedit oder regedt32 die Registry zu
öffnen und es sind folgende vier Schlüssel samt Unterschlüssel zu
löschen:
Arbeitsplatz\HKEY_CLASSES_ROOT\NCWebToy.ASPHTM
Arbeitsplatz\HKEY_CLASSES_ROOT\NCWebToy.ASPHTM.1
Arbeitsplatz\HKEY_CLASSES_ROOT\CLSID\{E4E7B3D3-061F-11D4-BE17-00105AD5EC68}
Arbeitsplatz\HKEY_CLASSES_ROOT\TypeLib\{E4E7B3C1-061F-11D4-BE17-00105AD5EC68}
Alle vier Schlüssel können leicht durch Suchen der
Zeichenkette "NCWebToy" gefunden werden.
Q3. Bei der Benutzung des Internet Information Server 4.0 tritt bei der Verwendung der Komponente in ASP-Dateien in seltenen Fällen der Fehler "Serverseitige Exception aufgetreten." auf. Wie kann dieses Verhalten umgangen werden ?
A3. Überprüfen Sie in der
Microsoft Management Konsole, ob die
Einstellungen für das entsprechende Web korrekt sind.
Bei Fragen oder Anregungen können Sie eine E-Mail an support{ at }netcomplett.de senden.
Komponente: Sie erhalten damit eine Vollversion zur uneingeschränkten Nutzung.
NETCOMPLETT GIBT KEINE GARANTIE ZUR EIGNUNG DER
SOFTWARE FÜR EINEN BESTIMMTEN ZWECK. DIESE BESCHRÄNKTE GARANTIE IST
AUSSCHLIESSLICH UND ANSTELLE ALLER ANDEREN GARANTIEN, SOWOHL AUSDRÜCKLICHER ALS
AUCH IMPLIZIERTER ART, EINSCHLIESSLICH DER IMPLIZIERTEN GARANTIE DER
VERKÄUFLICHKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER
NICHTÜBERTRETUNG. DA DIESE SOFTWARE KOSTENLOS IST, HAFTET NETCOMPLETT NICHT FÜR
IRGENDWELCHE SCHÄDEN, DIE BENUTZERN DIESER SOFTWARE ENTSTEHEN KÖNNEN.
NETCOMPLETT BIETET FÜR DIESE SOFTWARE KEINERLEI UNTERSTÜTZUNG UND WIRD AUCH
KEINE UPDATES DER SOFTWARE VORNEHMEN.
UNABHÄNGIG DAVON, OB EINES DER HIERIN DARGELEGTEN RECHTSMITTEL SEINEN WESENTLICHEN ZWECK NICHT ERFÜLLT, IST NETCOMPLETT IN KEINEM FALLE ERSATZPFLICHTIG FÜR IRGENDWELCHE INDIREKTEN, FOLGE- ODER ÄHNLICHEN SCHÄDEN (EINGESCHLOSSEN SIND SCHÄDEN AUS ENTGANGENEM GEWINN ODER VERLUST VON DATEN), DIE AUFGRUND DER BENUTZUNG DER SOFTWARE ODER DER UNFÄHIGKEIT, DIE SOFTWARE ZU VERWENDEN, ENTSTEHEN, SELBST WENN NETCOMPLETT VON DER MÖGLICHKEIT SOLCHER SCHÄDEN UNTERRICHTET WORDEN IST.