lazarus-ccr/applications/fpbrowser/pageloader.pas
2011-07-01 07:35:11 +00:00

111 lines
2.3 KiB
ObjectPascal

unit pageloader;
{$mode delphi}
interface
uses
Classes, SysUtils;
type
{ TPageLoader }
TPageLoader = class
public
Contents: string;
LastPageURL: string;
ContentsList: TStringList;
constructor Create;
procedure LoadFromURL(AURL: string);
procedure LoadBinaryResource(AURL: string; var ADest: TMemoryStream);
end;
var
MyPageLoader: TPageLoader;
implementation
uses httpsend;
{ TPageLoader }
constructor TPageLoader.Create;
begin
ContentsList := TStringList.Create;
end;
procedure TPageLoader.LoadFromURL(AURL: string);
var
Client: THttpSend;
begin
LastPageURL := AURL;
Client := THttpSend.Create;
try
// if checkGZip.Checked then
// begin
Client.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
Client.Headers.Add('Accept-Language: en-gb,en;q=0.5');
// Client.Headers.Add('Accept-Encoding: gzip,deflate');
Client.Headers.Add('Accept-Charset: utf-8;q=0.7,*;q=0.7'); // ISO-8859-1,
// end;
// Client.UserAgent := AUserAgent;
Client.HttpMethod('GET', AURL);
Client.Document.Position := 0;
ContentsList.LoadFromStream(Client.Document);
Contents := ContentsList.Text;
finally
Client.Free;
end;
end;
{.$define FPB_DEBUG_IMAGE_LOAD}
procedure TPageLoader.LoadBinaryResource(AURL: string; var ADest: TMemoryStream);
var
Client: THttpSend;
i: Integer;
begin
Client := THttpSend.Create;
try
Client.Headers.Add('Accept: image/png, image/jpeg, image/gif');
Client.Headers.Add('Accept-Language: en-gb,en;q=0.5');
// Client.Headers.Add('Accept-Encoding: gzip,deflate');
Client.Headers.Add('Accept-Charset: utf-8;q=0.7,*;q=0.7'); // ISO-8859-1,
// Client.UserAgent := AUserAgent;
Client.HttpMethod('GET', AURL);
Client.Document.Position := 0;
ADest := TMemoryStream.Create;
ADest.CopyFrom(Client.Document, Client.Document.Size);
// ADest.SaveToFile('/Users/felipe/test.gif');
{$IFDEF FPB_DEBUG_IMAGE_LOAD}
ContentsList.LoadFromStream(Client.Document);
WriteLn('Starting to receive image: ' + AURL);
for i := 0 to ContentsList.Count-1 do
WriteLn(ContentsList.Strings[i]);
Contents := ContentsList.Text;
{$ENDIF}
finally
Client.Free;
end;
end;
initialization
MyPageLoader := TPageLoader.Create;
finalization
MyPageLoader.Free;
end.