AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke HTML- über WinINet downloaden: Unicode?
Thema durchsuchen
Ansicht
Themen-Optionen

HTML- über WinINet downloaden: Unicode?

Ein Thema von HJay · begonnen am 17. Apr 2012 · letzter Beitrag vom 18. Apr 2012
Antwort Antwort
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#1

HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 12:06
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.
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 12:48
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;
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
shmia

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

AW: HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 19:16
Über das Interface XMLHTTPRequest kann man mit relativ wenig Aufwand Daten per HTTP(S) versenden.
Angehängte Dateien
Dateityp: zip HttpDownloader.zip (3,8 KB, 14x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 20:27
Die Webseite wird den Seiteninhalt bestimmt als ANSI oder UTF-8 ausliefern, also bringt es nicht viel, wenn du diesen Puffer als Unicode interpretierst.


Indy prüft übrigens das Format und konvertiert den Text entsprechend.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

AW: HTML- über WinINet downloaden: Unicode?

  Alt 17. Apr 2012, 20:43
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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#6

AW: HTML- über WinINet downloaden: Unicode?

  Alt 18. Apr 2012, 18:38
Danke, ich habe es jetzt mit TidHTTP gelöst!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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