Einzelnen Beitrag anzeigen

acyd

Registriert seit: 6. Jan 2010
2 Beiträge
 
#1

Mehrsprachige HTML downloaden

  Alt 6. Jan 2010, 21:18
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;
  Mit Zitat antworten Zitat