📄 httpprot.pas
字号:
FSocksUsercode : String;
FSocksPassword : String;
FSocksAuthentication : TSocksAuthentication;
{$IFDEF UseNTLMAuthentication}
FNTLMMsg2Info : TNTLM_Msg2_Info;
FProxyNTLMMsg2Info : TNTLM_Msg2_Info;
FAuthNTLMState : THttpNTLMState;
FProxyAuthNTLMState : THttpNTLMState;
FNTLMAuthType : TNTLMAuthType;
{$ENDIF}
FAuthBasicState : THttpBasicState;
FProxyAuthBasicState : THttpBasicState;
FBasicAuthType : TBasicAuthType;
FOnStateChange : TNotifyEvent;
FOnSessionConnected : TNotifyEvent;
FOnSessionClosed : TNotifyEvent;
FOnRequestHeaderBegin : TNotifyEvent;
FOnRequestHeaderEnd : TNotifyEvent;
FOnHeaderBegin : TNotifyEvent;
FOnHeaderEnd : TNotifyEvent;
FOnHeaderData : TNotifyEvent;
FOnDocBegin : TNotifyEvent;
FOnDocEnd : TNotifyEvent;
FOnDocData : TDocDataEvent;
FOnSendBegin : TNotifyEvent;
FOnSendEnd : TNotifyEvent;
FOnSendData : TDocDataEvent;
FOnTrace : TNotifyEvent;
FOnCommand : TOnCommand;
FOnCookie : TCookieRcvdEvent;
FOnDataPush : TDataAvailable;
FOnDataPush2 : TNotifyEvent;
FOnRequestDone : THttpRequestDone;
FOnLocationChange : TNotifyEvent;
{ Added by Eugene Mayevski }
FOnSocksConnected : TSessionConnected;
FOnSocksAuthState : TSocksAuthStateEvent;
FOnSocksError : TSocksErrorEvent;
FOnSocketError : TNotifyEvent;
FOnBeforeHeaderSend : TBeforeHeaderSendEvent; { Wilfried 9 sep 02}
FCloseReq : Boolean; { SAE 01/06/04 }
procedure CreateSocket; virtual;
procedure DoBeforeConnect; virtual;
procedure DoSocksConnected(Sender: TObject; ErrCode: Word);
procedure DoSocksAuthState(Sender : TObject; AuthState : TSocksAuthState);
procedure DoSocksError(Sender : TObject; ErrCode : Integer; Msg : String);
procedure SocketErrorTransfer(Sender : TObject);
procedure SendRequest(const method, Version: String); virtual;
procedure GetHeaderLineNext; virtual;
procedure GetBodyLineNext; virtual;
procedure SendCommand(const Cmd : String); virtual;
procedure Login; virtual;
procedure Logout; virtual;
procedure InternalClear; virtual;
procedure StartRelocation; virtual;
{$IFDEF UseNTLMAuthentication}
procedure StartAuthNTLM; virtual;
procedure StartProxyAuthNTLM; virtual; {BLD proxy NTLM support }
function GetNTLMMessage1 : String;
function GetNTLMMessage3 : String;
function PrepareNTLMAuth : Boolean;
{$ENDIF}
procedure CleanupRcvdStream;
procedure CleanupSendStream;
procedure StartAuthBasic; virtual;
procedure StartProxyAuthBasic; virtual;
function PrepareBasicAuth : Boolean;
procedure SocketDNSLookupDone(Sender: TObject; ErrCode: Word); virtual;
procedure SocketSessionClosed(Sender: TObject; ErrCode: Word); virtual;
procedure SocketSessionConnected(Sender : TObject; ErrCode : Word); virtual;
procedure SocketDataSent(Sender : TObject; ErrCode : Word); virtual;
procedure SocketDataAvailable(Sender: TObject; ErrCode: Word); virtual;
procedure LocationSessionClosed(Sender: TObject; ErrCode: Word); virtual;
procedure DoRequestAsync(Rq : THttpRequest); virtual;
procedure DoRequestSync(Rq : THttpRequest); virtual;
procedure SetMultiThreaded(newValue : Boolean); virtual;
procedure StateChange(NewState : THttpState); virtual;
procedure TriggerStateChange; virtual;
procedure TriggerCookie(const Data : String;
var bAccept : Boolean); virtual;
procedure TriggerSessionConnected; virtual;
procedure TriggerSessionClosed; virtual;
procedure TriggerBeforeHeaderSend(const Method : String;
Headers : TStrings); virtual;
procedure TriggerRequestHeaderBegin; virtual;
procedure TriggerRequestHeaderEnd; virtual;
procedure TriggerHeaderBegin; virtual;
procedure TriggerHeaderEnd; virtual;
procedure TriggerDocBegin; virtual;
procedure TriggerDocData(Data : Pointer; Len : Integer); virtual;
procedure TriggerDocEnd; virtual;
procedure TriggerSendBegin; virtual;
procedure TriggerSendData(Data : Pointer; Len : Integer); virtual;
procedure TriggerSendEnd; virtual;
procedure TriggerRequestDone; virtual;
procedure WndProc(var MsgRec: TMessage); virtual;
procedure SetReady; virtual;
procedure AdjustDocName; virtual;
function HTTPCliAllocateHWnd(Method: TWndMethod): HWND; virtual;
procedure HTTPCliDeallocateHWnd(WHandle: HWND); {$IFNDEF BCB} virtual; {$ENDIF}
procedure SetRequestVer(const Ver : String);
procedure WMHttpRequestDone(var msg: TMessage);
message WM_HTTP_REQUEST_DONE;
procedure WMHttpSetReady(var msg: TMessage);
message WM_HTTP_SET_READY;
procedure WMHttpLogin(var msg: TMessage);
message WM_HTTP_LOGIN;
{$IFDEF USE_SSL}
procedure SslHandshakeDone(Sender : TObject; ErrCode : Word);
{$ENDIF}
public
constructor Create(Aowner:TComponent); override;
destructor Destroy; override;
procedure Get; { Synchronous blocking Get }
procedure Post; { Synchronous blocking Post }
procedure Put; { Synchronous blocking Put }
procedure Head; { Synchronous blocking Head }
procedure Close; { Synchronous blocking Close }
procedure Abort; { Synchrounous blocking Abort }
procedure GetASync; { Asynchronous, non-blocking Get }
procedure PostASync; { Asynchronous, non-blocking Post }
procedure PutASync; { Asynchronous, non-blocking Put }
procedure HeadASync; { Asynchronous, non-blocking Head }
procedure CloseAsync; { Asynchronous, non-blocking Close }
property CtrlSocket : TWSocket read FCtrlSocket;
property Handle : HWND read FWindowHandle;
property State : THttpState read FState;
property LastResponse : String read FLastResponse;
property ContentLength : LongInt read FContentLength;
property ContentType : String read FContentType;
property TransferEncoding : String read FTransferEncoding;
property RcvdCount : LongInt read FRcvdCount;
property SentCount : LongInt read FSentCount;
property StatusCode : Integer read FStatusCode;
property ReasonPhrase : String read FReasonPhrase;
property DnsResult : String read FDnsResult;
property AuthorizationRequest : TStringList read FDoAuthor;
property DocName : String read FDocName;
property Location : String read FLocation
write FLocation;
property RcvdStream : TStream read FRcvdStream
write FRcvdStream;
property SendStream : TStream read FSendStream
write FSendStream;
property RcvdHeader : TStrings read FRcvdHeader;
property Hostname : String read FHostname;
property Protocol : String read FProtocol;
published
property URL : String read FURL
write FURL;
property LocalAddr : String read FLocalAddr {bb}
write FLocalAddr; {bb}
property Proxy : String read FProxy
write FProxy;
property ProxyPort : String read FProxyPort
write FProxyPort;
property Sender : String read FSender
write FSender;
property Agent : String read FAgent
write FAgent;
property Accept : String read FAccept
write FAccept;
property AcceptLanguage : String read FAcceptLanguage
write FAcceptLanguage;
property Reference : String read FReference
write FReference;
property Connection : String read FConnection
write FConnection;
property ProxyConnection : String read FProxyConnection
write FProxyConnection;
property Username : String read FUsername
write FUsername;
property Password : String read FPassword
write FPassword;
property ProxyUsername : String read FProxyUsername
write FProxyUsername;
property ProxyPassword : String read FProxyPassword
write FProxyPassword;
property NoCache : Boolean read FNoCache
write FNoCache;
property ModifiedSince : TDateTime read FModifiedSince
write FModifiedSince;
property Cookie : String read FCookie
write FCookie;
property ContentTypePost : String read FContentPost
write FContentPost;
property ContentRangeBegin: String read FContentRangeBegin {JMR!! Added this line!!!}
write FContentRangeBegin; {JMR!! Added this line!!!}
property ContentRangeEnd : String read FContentRangeEnd {JMR!! Added this line!!!}
write FContentRangeEnd; {JMR!! Added this line!!!}
property AcceptRanges : String read FAcceptRanges;
property MultiThreaded : Boolean read FMultiThreaded
write SetMultiThreaded;
property RequestVer : String read FRequestVer
write SetRequestVer;
property FollowRelocation : Boolean read FFollowRelocation {TED}
write FFollowRelocation; {TED}
property Options : THttpCliOptions read FOptions
write FOptions;
property OnTrace : TNotifyEvent read FOnTrace
write FOnTrace;
property OnSessionConnected : TNotifyEvent read FOnSessionConnected
write FOnSessionConnected;
property OnSessionClosed : TNotifyEvent read FOnSessionClosed
write FOnSessionClosed;
property OnHeaderData : TNotifyEvent read FOnHeaderData
write FOnHeaderData;
property OnCommand : TOnCommand read FOnCommand
write FOnCommand;
property OnHeaderBegin : TNotifyEvent read FOnHeaderBegin
write FOnHeaderBegin;
property OnHeaderEnd : TNotifyEvent read FOnHeaderEnd
write FOnHeaderEnd;
property OnRequestHeaderBegin : TNotifyEvent read FOnRequestHeaderBegin
write FOnRequestHeaderBegin;
property OnRequestHeaderEnd : TNotifyEvent read FOnRequestHeaderEnd
write FOnRequestHeaderEnd;
property OnDocBegin : TNotifyEvent read FOnDocBegin
write FOnDocBegin;
property OnDocData : TDocDataEvent read FOnDocData
write FOnDocData;
property OnDocEnd : TNotifyEvent read FOnDocEnd
write FOnDocEnd;
property OnSendBegin : TNotifyEvent read FOnSendBegin
write FOnSendBegin;
property OnSendData : TDocDataEvent read FOnSendData
write FOnSendData;
property OnSendEnd : TNotifyEvent read FOnSendEnd
write FOnSendEnd;
property OnStateChange : TNotifyEvent read FOnStateChange
write FOnStateChange;
property OnRequestDone : THttpRequestDone read FOnRequestDone
write FOnRequestDone;
property OnLocationChange : TNotifyEvent read FOnLocationChange
write FOnLocationChange;
property OnCookie : TCookieRcvdEvent read FOnCookie
write FOnCookie;
property OnDataPush : TDataAvailable read FOnDataPush
write FOnDataPush;
property OnDataPush2 : TNotifyEvent read FOnDataPush2
write FOnDataPush2;
property SocksServer : String read FSocksServer
write FSocksServer;
property SocksLevel : String read FSocksLevel
write FSocksLevel;
property SocksPort : String read FSocksPort
write FSocksPort;
property SocksUsercode : String read FSocksUsercode
write FSocksUsercode;
property SocksPassword : String read FSocksPassword
write FSocksPassword;
property SocksAuthentication : TSocksAuthentication read FSocksAuthentication
write FSocksAuthentication;
property OnSocksConnected : TSessionConnected read FOnSocksConnected
write FOnSocksConnected;
property OnSocksAuthState : TSocksAuthStateEvent read FOnSocksAuthState
write FOnSocksAuthState;
property OnSocksError : TSocksErrorEvent read FOnSocksError
write FOnSocksError;
property OnSocketError : TNotifyEvent read FOnSocketError
write FOnSocketError;
property OnBeforeHeaderSend : TBeforeHeaderSendEvent read FOnBeforeHeaderSend
write FOnBeforeHeaderSend;
end;
{ You must define USE_SSL so that SSL code is included in the component. }
{ To be able to compile the component, you must have the SSL related files }
{ which are _NOT_ freeware. See http://www.overbyte.be for details. }
{$IFDEF USE_SSL}
{$I HttpProtIntfSsl.inc}
{$ENDIF}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -