6 Classes, IdHttp, IdException, SysUtils, Dialogs;
9 THTTPDownloadThread = class(TThread)
18 FOnSuccess: TNotifyEvent;
19 FOnConnectionFailed: TNotifyEvent;
20 FLastErrorMessage: String;
21 procedure SetProxyPort(const Value: integer);
22 procedure SetProxyServer(const Value: String);
23 procedure SetOnConnectionFailed(const Value: TNotifyEvent);
24 procedure SetOnSuccess(const Value: TNotifyEvent);
26 procedure Execute; override;
28 procedure DoConnectionFailed;
30 constructor Create(const Host, URL, Post: String); reintroduce;
31 property RecvString: String read FRecvString;
32 property ProxyServer: String read FProxyServer write SetProxyServer;
33 property ProxyPort: integer read FProxyPort write SetProxyPort;
34 property OnConnectionFailed: TNotifyEvent read FOnConnectionFailed write SetOnConnectionFailed;
35 property OnSuccess: TNotifyEvent read FOnSuccess write SetOnSuccess;
36 property LastErrorMessage: String read FLastErrorMessage;
42 \88Ù
\82È
\82é
\83X
\83\8c\83b
\83h
\82ª
\8f\8a\97L
\82·
\82é VCL
\82Ì
\83\81\83\
\83b
\83h/
\8aÖ
\90\94/
\83v
\83\8d\83p
\83e
\83B
\82ð
43 \95Ê
\82Ì
\83X
\83\8c\83b
\83h
\82Ì
\92\86\82©
\82ç
\88µ
\82¤
\8fê
\8d\87\81A
\94r
\91¼
\8f\88\97\9d\82Ì
\96â
\91è
\82ª
\94
\90¶
\82µ
\82Ü
\82·
\81B
45 \83\81\83C
\83\93\83X
\83\8c\83b
\83h
\82Ì
\8f\8a\97L
\82·
\82é
\83I
\83u
\83W
\83F
\83N
\83g
\82É
\91Î
\82µ
\82Ä
\82Í Synchronize
46 \83\81\83\
\83b
\83h
\82ð
\8eg
\82¤
\8e\96\82ª
\82Å
\82«
\82Ü
\82·
\81B
\91¼
\82Ì
\83I
\83u
\83W
\83F
\83N
\83g
\82ð
\8eQ
\8fÆ
\82·
\82é
\82½
\82ß
47 \82Ì
\83\81\83\
\83b
\83h
\82ð
\83X
\83\8c\83b
\83h
\83N
\83\89\83X
\82É
\92Ç
\89Á
\82µ
\81ASynchronize
\83\81\83\
\83b
\83h
\82Ì
48 \88ø
\90\94\82Æ
\82µ
\82Ä
\93n
\82µ
\82Ü
\82·
\81B
50 \82½
\82Æ
\82¦
\82Î
\81AUpdateCaption
\83\81\83\
\83b
\83h
\82ð
\88È
\89º
\82Ì
\82æ
\82¤
\82É
\92è
\8b`
\82µ
\81A
52 procedure THTTPDownloadThread.UpdateCaption;
54 Form1.Caption := 'THTTPDownloadThread
\83X
\83\8c\83b
\83h
\82©
\82ç
\8f\91\82«
\8a·
\82¦
\82Ü
\82µ
\82½';
57 Execute
\83\81\83\
\83b
\83h
\82Ì
\92\86\82Å Synchronize
\83\81\83\
\83b
\83h
\82É
\93n
\82·
\82±
\82Æ
\82Å
\83\81\83C
58 \83\93\83X
\83\8c\83b
\83h
\82ª
\8f\8a\97L
\82·
\82é Form1
\82Ì Caption
\83v
\83\8d\83p
\83e
\83B
\82ð
\88À
\91S
\82É
\95Ï
59 \8dX
\82Å
\82«
\82Ü
\82·
\81B
61 Synchronize(UpdateCaption);
64 { THTTPDownloadThread }
66 constructor THTTPDownloadThread.Create(const Host, URL, Post: String);
68 inherited Create(true);
74 procedure THTTPDownloadThread.DoConnectionFailed;
76 FOnConnectionFailed(self);
79 procedure THTTPDownloadThread.DoSuccess;
84 procedure THTTPDownloadThread.Execute;
86 TmpStr: TStringStream;
92 Http := TIdHTTP.Create(nil);
94 Http.ProxyParams.ProxyServer := ProxyServer;
95 Http.ProxyParams.ProxyPort := ProxyPort;
96 if FPost = '' then begin
97 FRecvString := Http.Get(FURL);
99 TmpStr := TStringStream.Create(FPost);
100 FRecvString := Http.Post(FURL, TmpStr);
102 if Assigned(FOnSuccess) then Synchronize(DoSuccess);
104 on E:EIdException do begin
105 //ShowMessage(E.Message);
106 FLastErrorMessage := E.Message;
107 if Assigned(FOnConnectionFailed) then Synchronize(DoConnectionFailed);
112 if TmpStr <> nil then TmpStr.Free;
116 procedure THTTPDownloadThread.SetOnConnectionFailed(
117 const Value: TNotifyEvent);
119 FOnConnectionFailed := Value;
122 procedure THTTPDownloadThread.SetOnSuccess(const Value: TNotifyEvent);
127 procedure THTTPDownloadThread.SetProxyPort(const Value: integer);
132 raise EIdException.Create('Tried to change proxy without suspending');
135 procedure THTTPDownloadThread.SetProxyServer(const Value: String);
138 FProxyServer := Value
140 raise EIdException.Create('Tried to change proxy without suspending');