Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Internet / LAN / ASP.NET (https://www.delphipraxis.net/23-library-internet-lan-asp-net/)
-   -   Delphi HTTP über MSXML (https://www.delphipraxis.net/94462-http-ueber-msxml.html)

shmia 21. Jun 2007 18:51


HTTP über MSXML
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz