Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mehrsprachige HTML downloaden (https://www.delphipraxis.net/145711-mehrsprachige-html-downloaden.html)

acyd 6. Jan 2010 21:18


Mehrsprachige HTML downloaden
 
Hallo !

Ich versuche eine Internetseite (http://www.themoviedb.org/movie/1858)
runterzuladen, die mehrsprachig ist.
Die Spracherkennung geschieht anscheinend über den Browser.

Browser -> Sprache -> DE = Internetseite in deutsch
Browser -> Sprache -> EN = Internetseite in englisch

Ich will nun die Seite mit der GetHTML funktion runterladen, was auch geschieht, nur nicht in der richtigen Sprache. Ich erhalte immer die englische html.

Nun gibt es in Delphi die Indy Komponente IDHTTP.
Mit dieser kann man in der Request-Option die gewünschte sprache eintragen und somit erhält man die richtige html.

Kann man nun durch modifizieren der unten gezeigten funktion das selbe ergebnis erzielen ?
Ich würde gerne auf die Indy Komponenten verzichten.

Danke ! Bin für jede Hilfe dankbar.

Delphi-Quellcode:
function GetHTML(AUrl: string): string;
var
  databuffer : array[0..4095] of char;
  ResStr : string;
  hSession, hfile: hInternet;
  dwindex,dwcodelen,dwread,dwNumber: cardinal;
  dwcode : array[1..20] of char;
  res   : pchar;
  Str   : pchar;
begin
   //ResStr:='';
   //Result:='';
   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 try
      hfile:=InternetOpenUrl(
         hsession,
         pchar(AUrl),
         nil,
         0,
         INTERNET_FLAG_RELOAD,
         0);
      if assigned(hfile) then try
         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)) and (dwRead <>0) do begin
                  databuffer[dwread]:=#0;
                  Str := pchar(@databuffer);
                  resStr := resStr + Str;
                  Application.ProcessMessages;
            end;
         end else
             ResStr := 'Status:'+res;
      finally
             InternetCloseHandle(hfile);
      end;
   finally
          InternetCloseHandle(hsession);
   end;
   Result := ResStr;
end;

jfheins 6. Jan 2010 21:26

Re: Mehrsprachige HTML downloaden
 
Du müsstest einen Accept-Language-Header hinzufügen.

Da ich deine Funktion nicht ganz überblicke: Bei der InternetOpenUrl Funktion ist der 3. Parameter headers - sollte das gewünschte sein, ob das reicht k.A.

acyd 6. Jan 2010 21:50

Re: Mehrsprachige HTML downloaden
 
Zitat:

Zitat von jfheins
Du müsstest einen Accept-Language-Header hinzufügen.

Da ich deine Funktion nicht ganz überblicke: Bei der InternetOpenUrl Funktion ist der 3. Parameter headers - sollte das gewünschte sein, ob das reicht k.A.

Das war die Lösung. :) Danke !


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