Thema: Delphi HTTP über MSXML

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 

HTTP über MSXML

  Alt 21. Jun 2007, 18:51
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.
Andreas
  Mit Zitat antworten Zitat