DragonNest/Common/Utility/HttpClient.h

111 lines
3.6 KiB
C
Raw Normal View History

2024-12-19 09:48:26 +08:00
/*//===============================================================
<< HTTP CLIENT >>
FILE : HTTPCLIENT.H, HTTPCLIENT.CPP
DESC : WININET <EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>̿<EFBFBD><EFBFBD><EFBFBD> HTTP CLIENT Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INIT BUILT DATE : 2006. 02. 20
LAST BUILT DATE : 2006. 02. 21
P.S.>
- One-Request,One-Response / Keep-Alive <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- One-Request,One-Response : Ư<EFBFBD><EFBFBD> URL<EFBFBD><EFBFBD> HTTP <EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û<EFBFBD>Ͽ<EFBFBD> <EFBFBD>޴<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Open() <EFBFBD><EFBFBD> RecvResponse() <EFBFBD><EFBFBD> Close())
- Keep-Alive : Ư<EFBFBD><EFBFBD> HTTP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>Ź<EFBFBD> <EFBFBD>ٸ<EFBFBD> <EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û<EFBFBD>Ͽ<EFBFBD> <EFBFBD>޴<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Open() <EFBFBD><EFBFBD> SendRequest() <EFBFBD><EFBFBD> RecvResponse() <EFBFBD><EFBFBD> Close())
Copyright<EFBFBD><EFBFBD> 2002~2007 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
*///===============================================================
#pragma once
///////////////////////////////////////////////////////////////////
// INCLUDE
///////////////////////////////////////////////////////////////////
#include <TCHAR.H>
#include <WINDOWS.H>
#include <WININET.H>
#pragma comment(lib, "WININET.LIB")
///////////////////////////////////////////////////////////////////
// DEFINE
///////////////////////////////////////////////////////////////////
#define DF_DEFAULT_HTTP_PORTNUMBER (80)
///////////////////////////////////////////////////////////////////
// DECLARATION
///////////////////////////////////////////////////////////////////
//*---------------------------------------------------------------
// TYPE : CLASS
// NAME : CHttpClient
//*---------------------------------------------------------------
// DESC : Http Client Ŭ<><C5AC><EFBFBD><EFBFBD>
// PRGM : B4nFter
//*---------------------------------------------------------------
class CHttpClient
{
public:
enum EF_HTTP_CONNECTION_TYPE {
EV_HTTP_CONNECTION_NONE = 0, // <20>ʱⰪ
EV_HTTP_CONNECTION_ONEREQONERSP = 1, // HTTP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : One-Req,One-Rsp
EV_HTTP_CONNECTION_KEEPALIVE = 2, // HTTP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Keep-Alive
};
public:
CHttpClient();
~CHttpClient();
// One-Req,One-Rsp / Keep-Alive <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD>
BOOL Open(
LPCTSTR lpszHttpServerAddressUrl, // One-Req,One-Rsp : URL <20>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>θ<EFBFBD> <20><><EFBFBD><EFBFBD> / Keep-Alive : <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD> (URL, DOT-DECIMAL)
EF_HTTP_CONNECTION_TYPE eHttpConnectionMode = EV_HTTP_CONNECTION_ONEREQONERSP,
INTERNET_PORT wHttpServerPortNumber = DF_DEFAULT_HTTP_PORTNUMBER, // Keep-Alive <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
LPCTSTR lpszUserName = NULL, // Keep-Alive <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
LPCTSTR lpszPassword = NULL // Keep-Alive <20><> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
);
VOID Close();
BOOL IsOpen();
INT RecvResponse(LPBYTE lpbtBuffer, INT nBufferSize);
INT RecvDownFile(LPCTSTR lpszFileName, LPBINDSTATUSCALLBACK pCallBack);
DWORD SetOption(DWORD dwMaxConnCount, DWORD dwTimout);
// One-Req,One-Rsp <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD>
// Keep-Alive <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD>
BOOL ReOpen();
INT SendRequest(LPCTSTR lpszUrl, BOOL bCheckResultDataLength = FALSE, BOOL bAsyncRequest = FALSE);
INT SendRequsetPostA(LPCTSTR lpszUrl, LPCSTR szPostData); //Ansi<73><69> Post
INT SendRequestGet(LPCTSTR lpszUrl);
LONG m_RefCount;
LONG IncRefCount() { return(InterlockedIncrement(&m_RefCount)); }
LONG DecRefCount() { return(InterlockedDecrement(&m_RefCount)); }
private:
VOID Initialize();
VOID Finalize();
private:
// One-Req,One-Rsp / Keep-Alive <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HINTERNET m_hInternet; // InternetOpen() <20><> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD>
HINTERNET m_hInternetConnection; // One-Req,One-Rsp : InternetOpenUrl() / Keep-Alive : InternetConnect() <20><> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD>
HINTERNET m_hHttpRequest; // Keep-Alive <20><><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EF_HTTP_CONNECTION_TYPE m_eHttpConnectionMode;
// One-Req,One-Rsp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Keep-Alive <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR m_szHttpServerAddress[MAX_PATH];
INTERNET_PORT m_wHttpServerPortNumber;
TCHAR m_szUserName[MAX_PATH];
TCHAR m_szPassword[MAX_PATH];
};