Meistens wird ja
Indy empfohlen, um Daten per HTTP zu verschicken und empfangen.
Wem dies zu viel Installationsaufwand ist, kann die
MSXML ActiveX-Library von Microsoft benützen.
Natürlich bindet man sich so ganz eng an Windows und den IE.
Über das Interface
IXMLHTTPRequest kann man auch verschlüsselte (SSL) Verbindungen über das HTTPS-Protokoll aufbauen.
Ausserdem werden die Proxy-Einstellungen der IE übernommen.
(siehe auch:
http://de.wikipedia.org/wiki/XMLHttpRequest )
1.) Schritt
MSXML muss importiert werden. Alles schliesen.
Im
IDE-Menue Projekt->Typbibliothek importieren... klicken
Dann "
Microsoft XML, v4.0" auswählen und auf "
Unit anlegen" klicken
diese Beschreibung bezieht sich auf Delphi 5. Andere Delphi-Versionen können hier leicht abweichen
MSXML gibt es in den Versionen 2.0 bis 6.0.
Ich empfehle hier die Version 4.0, da man nicht sicher sein kann, dass auf jedem Rechner
auch wirklich die aktuellste Version installiert ist.
2.) Schritt
eine Webseite downloaden:
Delphi-Quellcode:
uses ..., MSXML2_TLB;
procedure TForm1.Button1Click(Sender: TObject);
var
req : IXMLHTTPRequest;
begin
Memo1.Clear;
Memo2.Clear;
req := CoXMLHTTP.Create;
// Interface erzeugen
// in EdtURL steht die URL, die heruntergeladen werden soll
req.open('
GET', EdtURL.Text, False,
{Username} EmptyParam,
{Passwort} EmptyParam);
// eigenen Request-Header setzen
req.setRequestHeader('
ApplicationID', '
Test V1.0');
req.send(EmptyParam);
// Anfrage an Server senden und Antwort abwarten
// Header anzeigen
MemoHeaders.Lines.Text := req.getAllResponseHeaders;
// Nutzdaten anzeigen
MemoData.Lines.Text := req.responseText;
// Status anzeigen
Caption := req.statusText;
// das Interface wird automatisch freigegeben; kein .Free oder .Release erforderlich
end;
Man kann auch eigene Header setzen und auch andere Methoden wie z.B. HEAD, POST, PUT, ... verwenden.
Auch die WebDAV (<== "erweitertes HTTP") Methoden sind verfügbar.