📄 auhttp.hpp
字号:
bool FShowGoOnlineMessage;
bool FWorkOffline;
void *FData;
TauHTTPBeforeSendRequest FOnBeforeSendRequest;
TauHTTPHeaderInfoEvent FOnHeaderInfo;
TauHTTPDoneEvent FOnDone;
Classes::TNotifyEvent FOnDoneInterrupted;
TauHTTPProgressEvent FOnProgress;
TauHTTPStatusChanged FOnStatusChanged;
TauHTTPRedirected FOnRedirected;
TauHTTPUploadProgressEvent FOnUploadProgress;
TauHTTPUploadFieldRequest FOnUploadFieldRequest;
Classes::TNotifyEvent FOnAnyError;
Classes::TNotifyEvent FOnAborted;
TauHTTPConnLostEvent FOnConnLost;
Classes::TNotifyEvent FOnHostUnreachable;
TauHTTPErrorEvent FOnHTTPError;
Classes::TNotifyEvent FOnOutputFileError;
TauHTTPPasswordRequestEvent FOnPasswordRequest;
TauHTTPProxyAuthenticationEvent FOnProxyAuthenticationRequest;
Authread::TauThreadWaitTimeoutExpired FOnWaitTimeoutExpired;
bool FBusy;
bool FRealBusy;
Authread::TauCustomThread* FThread;
Classes::TStream* HTTPStream;
bool HTTPSuccess;
bool HTTPTryAgain;
bool HTTPOutputToFile;
bool HTTPContinueDownload;
bool HTTPDeleteOutputFileOnAbort;
void *HTTPData;
unsigned HTTPFileSize;
unsigned HTTPBytesTransferred;
unsigned HTTPStartTime;
unsigned HTTPInitStartRange;
unsigned HTTPInitEndRange;
AnsiString HTTPUploadRequestHeader;
void *hSession;
void *hConnect;
void *hRequest;
unsigned hFile;
void __fastcall SetAddHeaders(Classes::TStrings* Value);
bool __fastcall GetSuspended(void);
void __fastcall SetSuspended(bool Value);
Classes::TThreadPriority __fastcall GetThreadPriority(void);
void __fastcall SetThreadPriority(Classes::TThreadPriority Value);
bool __fastcall GetWaitThread(void);
void __fastcall SetWaitThread(bool Value);
int __fastcall GetWaitTimeout(void);
void __fastcall SetWaitTimeout(int Value);
bool __fastcall GetThreadBusy(void);
bool __fastcall GetFreeOnTerminate(void);
void __fastcall SetFreeOnTerminate(bool Value);
AnsiString __fastcall GetFileName();
AnsiString __fastcall GetHostName();
bool __fastcall IsNotDefaultAcceptTypes(void);
void __fastcall PrepareProgressParams(void);
void __fastcall CloseHTTPHandles(void);
void __fastcall AbortAndReleaseStreams(void);
void __fastcall ThreadExecute(System::TObject* Sender);
void __fastcall ThreadException(System::TObject* Sender);
void __fastcall ThreadDone(System::TObject* Sender);
void __fastcall ThreadWaitTimeoutExpired(System::TObject* Sender, bool &TerminateThread);
void __fastcall CallAborted(void);
void __fastcall CallHeaderInfo(void);
void __fastcall CallProgress(void);
void __fastcall CallUploadProgress(void);
void __fastcall CallPasswordRequest(void);
void __fastcall CallProxyAuthenticationRequest(void);
protected:
AnsiString HTTPRawHeadersCRLF;
AnsiString HTTPContentType;
AnsiString HTTPContentLanguage;
AnsiString HTTPContentEncoding;
AnsiString HTTPLocation;
AnsiString HTTPETag;
System::TDateTime HTTPDate;
System::TDateTime HTTPLastModified;
System::TDateTime HTTPExpires;
Byte ProgressPercentsDone;
unsigned ProgressElapsedTime;
unsigned ProgressEstimatedTime;
float ProgressTransferRate;
void __fastcall DoAnyError(void);
void __fastcall ReleaseHTTPStream(void);
public:
int HTTPErrorCode;
__fastcall virtual TauCustomHTTP(Classes::TComponent* aOwner);
__fastcall virtual ~TauCustomHTTP(void);
bool __fastcall Read(bool ForceWaitThread);
bool __fastcall ReadRange(unsigned StartRange, unsigned EndRange, bool ForceWaitThread);
bool __fastcall Upload(Word NumberOfFields);
bool __fastcall BeginPrepareUpload(void);
void __fastcall UploadStream(const AnsiString FieldName, Classes::TStream* UploadStream, const AnsiString
FileName);
void __fastcall UploadString(const AnsiString FieldName, const AnsiString StrValue);
void __fastcall UploadInteger(const AnsiString FieldName, int IntValue);
void __fastcall UploadBoolean(const AnsiString FieldName, bool BoolValue);
void __fastcall UploadPicture(const AnsiString FieldName, Graphics::TPicture* Picture, const AnsiString
FileName);
void __fastcall EndPrepareUpload(void);
void __fastcall Abort(bool DeleteOutputFile, bool HardTerminate);
void __fastcall Pause(void);
bool __fastcall Resume(void);
bool __fastcall IsGlobalOffline(void);
__property AnsiString Username = {read=FLoginUsername, write=FLoginUsername, stored=false};
__property AnsiString Password = {read=FLoginPassword, write=FLoginPassword, stored=false};
__property bool Busy = {read=FBusy, nodefault};
__property bool ThreadBusy = {read=GetThreadBusy, nodefault};
__property bool FreeOnTerminate = {read=GetFreeOnTerminate, write=SetFreeOnTerminate, nodefault};
__property AnsiString FileName = {read=GetFileName};
__property AnsiString HostName = {read=GetHostName};
__property Authread::TauCustomThread* Thread = {read=FThread};
__property AnsiString AcceptTypes = {read=FAcceptTypes, write=FAcceptTypes, stored=IsNotDefaultAcceptTypes
};
__property Classes::TStrings* AddHeaders = {read=FAddHeaders, write=SetAddHeaders};
__property AnsiString Agent = {read=FAgent, write=FAgent};
__property TauHTTPProxy* Proxy = {read=FProxy, write=FProxy};
__property bool ShowGoOnlineMessage = {read=FShowGoOnlineMessage, write=FShowGoOnlineMessage, default=0
};
__property TauCacheOptions CacheOptions = {read=FCacheOptions, write=FCacheOptions, default=38};
__property TauInternetOptions InternetOptions = {read=FInternetOptions, write=FInternetOptions, default=32
};
__property AnsiString OutputFileName = {read=FOutputFileName, write=FOutputFileName};
__property TauOutputFileAttributes* OutputFileAttributes = {read=FOutputFileAttributes, write=FOutputFileAttributes
};
__property AnsiString URL = {read=FURL, write=FURL};
__property AnsiString POSTData = {read=FPostData, write=FPostData};
__property TauHTTPRange* Range = {read=FRange, write=FRange};
__property AnsiString Referer = {read=FReferer, write=FReferer};
__property TauHTTPRequestMethod RequestMethod = {read=FRequestMethod, write=FRequestMethod, default=0
};
__property TauHTTPTimeouts* Timeouts = {read=FTimeouts, write=FTimeouts};
__property TauBufferSize TransferBufferSize = {read=FTransferBufferSize, write=FTransferBufferSize,
default=4096};
__property bool WorkOffline = {read=FWorkOffline, write=FWorkOffline, default=0};
__property void * Data = {read=FData, write=FData, stored=false};
__property bool Suspended = {read=GetSuspended, write=SetSuspended, nodefault};
__property Classes::TThreadPriority ThreadPriority = {read=GetThreadPriority, write=SetThreadPriority
, default=3};
__property bool WaitThread = {read=GetWaitThread, write=SetWaitThread, default=0};
__property int WaitTimeout = {read=GetWaitTimeout, write=SetWaitTimeout, default=0};
__property TauHTTPBeforeSendRequest OnBeforeSendRequest = {read=FOnBeforeSendRequest, write=FOnBeforeSendRequest
};
__property TauHTTPHeaderInfoEvent OnHeaderInfo = {read=FOnHeaderInfo, write=FOnHeaderInfo};
__property TauHTTPDoneEvent OnDone = {read=FOnDone, write=FOnDone};
__property TauHTTPProgressEvent OnProgress = {read=FOnProgress, write=FOnProgress};
__property TauHTTPStatusChanged OnStatusChanged = {read=FOnStatusChanged, write=FOnStatusChanged};
__property TauHTTPRedirected OnRedirected = {read=FOnRedirected, write=FOnRedirected};
__property TauHTTPUploadProgressEvent OnUploadProgress = {read=FOnUploadProgress, write=FOnUploadProgress
};
__property TauHTTPUploadFieldRequest OnUploadFieldRequest = {read=FOnUploadFieldRequest, write=FOnUploadFieldRequest
};
__property Classes::TNotifyEvent OnAnyError = {read=FOnAnyError, write=FOnAnyError};
__property Classes::TNotifyEvent OnAborted = {read=FOnAborted, write=FOnAborted};
__property TauHTTPConnLostEvent OnConnLost = {read=FOnConnLost, write=FOnConnLost};
__property Classes::TNotifyEvent OnDoneInterrupted = {read=FOnDoneInterrupted, write=FOnDoneInterrupted
};
__property Classes::TNotifyEvent OnOutputFileError = {read=FOnOutputFileError, write=FOnOutputFileError
};
__property TauHTTPPasswordRequestEvent OnPasswordRequest = {read=FOnPasswordRequest, write=FOnPasswordRequest
};
__property TauHTTPProxyAuthenticationEvent OnProxyAuthenticationRequest = {read=FOnProxyAuthenticationRequest
, write=FOnProxyAuthenticationRequest};
__property Classes::TNotifyEvent OnHostUnreachable = {read=FOnHostUnreachable, write=FOnHostUnreachable
};
__property TauHTTPErrorEvent OnHTTPError = {read=FOnHTTPError, write=FOnHTTPError};
__property Authread::TauThreadWaitTimeoutExpired OnWaitTimeoutExpired = {read=FOnWaitTimeoutExpired
, write=FOnWaitTimeoutExpired};
};
class DELPHICLASS TauHTTPPragmaNoCache;
class PASCALIMPLEMENTATION TauHTTPPragmaNoCache : public TauCustomHTTP
{
typedef TauCustomHTTP inherited;
public:
__fastcall virtual TauHTTPPragmaNoCache(Classes::TComponent* aOwner);
__property CacheOptions ;
public:
#pragma option push -w-inl
/* TauCustomHTTP.Destroy */ inline __fastcall virtual ~TauHTTPPragmaNoCache(void) { }
#pragma option pop
};
class DELPHICLASS TauHTTP;
class PASCALIMPLEMENTATION TauHTTP : public TauCustomHTTP
{
typedef TauCustomHTTP inherited;
__published:
__property AcceptTypes ;
__property AddHeaders ;
__property Agent ;
__property Proxy ;
__property URL ;
__property Username ;
__property CacheOptions ;
__property InternetOptions ;
__property OutputFileName ;
__property OutputFileAttributes ;
__property Password ;
__property POSTData ;
__property Range ;
__property Referer ;
__property RequestMethod ;
__property ShowGoOnlineMessage ;
__property Timeouts ;
__property ThreadPriority ;
__property TransferBufferSize ;
__property WaitThread ;
__property WaitTimeout ;
__property WorkOffline ;
__property OnBeforeSendRequest ;
__property OnHeaderInfo ;
__property OnDone ;
__property OnDoneInterrupted ;
__property OnOutputFileError ;
__property OnProgress ;
__property OnRedirected ;
__property OnUploadProgress ;
__property OnUploadFieldRequest ;
__property OnAnyError ;
__property OnAborted ;
__property OnConnLost ;
__property OnHTTPError ;
__property OnHostUnreachable ;
__property OnPasswordRequest ;
__property OnProxyAuthenticationRequest ;
__property OnWaitTimeoutExpired ;
public:
#pragma option push -w-inl
/* TauCustomHTTP.Create */ inline __fastcall virtual TauHTTP(Classes::TComponent* aOwner) : TauCustomHTTP(
aOwner) { }
#pragma option pop
#pragma option push -w-inl
/* TauCustomHTTP.Destroy */ inline __fastcall virtual ~TauHTTP(void) { }
#pragma option pop
};
//-- var, const, procedure ---------------------------------------------------
static const Word auDefaultProxyPort = 0x1f90;
#define auDefaultProxyBypass "127.0.0.1;"
static const Word DEF_TRANSFERBUFFERSIZE = 0x1000;
#define TEXTHTML "text/html"
#define DEF_ACCEPT_TYPES "text/html, */*"
#define S_PIC "pic"
static const Word HTTP_STATUS_RANGE_NOT_SATISFIABLE = 0x1a0;
#define STR_DownloadError "Download Error"
#define STR_HostUnreachable "Host Unreachable"
#define STR_ConnectionLost "Connection Lost"
extern PACKAGE bool __fastcall ParseURL(AnsiString URL, AnsiString &Protocol, AnsiString &HostName,
AnsiString &URLPath, AnsiString &Username, AnsiString &Password, AnsiString &ExtraInfo, Word &Port)
;
extern PACKAGE AnsiString __fastcall URLEncode(const AnsiString Str);
extern PACKAGE AnsiString __fastcall URLDecode(AnsiString Str);
extern PACKAGE AnsiString __fastcall HTTPReadString(const AnsiString URL, int Timeout);
} /* namespace Auhttp */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Auhttp;
#endif
#pragma option pop // -w-
#pragma option pop // -Vx
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif // auHTTP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -