Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   HTML- über WinINet downloaden: Unicode? (https://www.delphipraxis.net/167763-html-ueber-wininet-downloaden-unicode.html)

HJay 17. Apr 2012 11:06

HTML- über WinINet downloaden: Unicode?
 
Ich habe diesen Artikel in der Code-Bibliothek gefunden und die kurze, griffige Lösung gefällt mir gut.

http://www.delphipraxis.net/5520-htm...ownloaden.html
Code:
function GetHTML(AUrl: string): string;
  var
    databuffer      : array[0..4095] of char;
    ResStr          : string;
    hSession, hfile : hInternet;
    dwcode          : array[1..20] of char;
    res             : pchar;
    Str             : pchar;
    dwindex, dwcodelen, dwread, dwNumber: cardinal;
begin
  ResStr:='';
  if Pos('http://', Lowercase(AUrl)) = 0 then AUrl := 'http://' + AUrl;

  hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

  if assigned(hsession) then begin
    hfile:=InternetOpenUrl(hsession, pchar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
    dwIndex := 0;
    dwCodeLen := 10;
    HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
    res := pchar(@dwcode);
    dwNumber := sizeof(databuffer)-1;
    if (res ='200') or (res ='302') then begin
      while (InternetReadfile(hfile, @databuffer, dwNumber, DwRead)) do begin
        if dwRead =0 then break;
        databuffer[dwread] := #0;
        Str := pchar(@databuffer);
        resStr := resStr + Str;
      end;
    end
    else ResStr := 'Status:' + res;
    if assigned(hfile) then InternetCloseHandle(hfile);
  end;

  InternetCloseHandle(hsession);
  Result := resStr;
end;
Unter Delphi 2010 / Win 7-64 produziert der aufruf aber nur Kauderwelsch -- wahrscheinlich weil der alte Code noch nicht mit Unicode kompatibel ist.

Wie müsste man den Code abwandeln, damit man die alte Routine mit Unicode/Delphi 2010 verwenden kann? Würde mich über Hilfe sehr freuen!

PS
Oder gibt es mir unbekannte Routinen in Delphi, mit denen man eine HTML-Seite noch einfacher und geradliniger downloaden kann? WebBrowser ist mir zuviel Overhead, ich brauche nur den HTML-Code als String.

Andreas L. 17. Apr 2012 11:48

AW: HTML- über WinINet downloaden: Unicode?
 
Du kannst die Indy-Komponente TIdHTTp verwenden. Sollte bei Delphi vorinstalliert sein.
Delphi-Quellcode:
var
  html: String;
  http: TIdHTTP;
begin
  http := TIdHTTP.Create(nil);
  try
    html := http.Get('http://www.domain.com/datei.html');
  finally
    FreeAndNil(http);
  end;
end;

shmia 17. Apr 2012 18:16

AW: HTML- über WinINet downloaden: Unicode?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Über das Interface XMLHTTPRequest kann man mit relativ wenig Aufwand Daten per HTTP(S) versenden.

himitsu 17. Apr 2012 19:27

AW: HTML- über WinINet downloaden: Unicode?
 
Die Webseite wird den Seiteninhalt bestimmt als ANSI oder UTF-8 ausliefern, also bringt es nicht viel, wenn du diesen Puffer als Unicode interpretierst. :zwinker:


Indy prüft übrigens das Format und konvertiert den Text entsprechend.

Valle 17. Apr 2012 19:43

AW: HTML- über WinINet downloaden: Unicode?
 
Nur mal so als kleine Anmerkung: Der Name der Funktion ist wirklich Quatsch. Die kann auch sonstwas runterladen, das hat mit HTML nichts zutun.

Liebe Grüße,
Valentin

HJay 18. Apr 2012 17:38

AW: HTML- über WinINet downloaden: Unicode?
 
Danke, ich habe es jetzt mit TidHTTP gelöst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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