|
- //////////////////////////////////// HttpClient.h
- #ifndef HTTPCLIENT_H
- #define HTTPCLIENT_H
- #include "StdAfx.h"
- #include <afxinet.h>
- #include <unordered_map>
- #include <process.h>
- #include <string>
- #define IE_AGENT _T("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)")
-
- // 操作成功
- #define SUCCESS 0
- // 操作失败
- #define FAILURE 1
-
- #define OUTTIME 2
-
- class CAttemperEngineSink;
- class CHttpClient
- {
- public:
- CHttpClient(LPCTSTR strAgent = IE_AGENT);
- virtual ~CHttpClient(void);
-
- int HttpGet(LPCTSTR strUrl, LPCTSTR strPostData, CString &strResponse, CString &Err);
- int HttpPost(LPCTSTR strUrl, LPCTSTR strPostData, CString &strResponse, CString &Err);
- //添加
- static void AddLog(DWORD dwSocketID, GETDUILIEBASE LogText);
- //获取
- static std::unordered_map<DWORD, GETDUILIELIST> GetLog();
-
- //运行
- static unsigned __stdcall Runs(void* pParam);
- //启动
- static bool start(CAttemperEngineSink* pSink);
- //结束
- static bool end();
- //获取数量
- static DWORD GetCount();
- // 进行Url编码 UTF-8
- static CString UrlEncode(CString strUnicode);
- private:
- int ExecuteRequest(LPCTSTR strMethod, LPCTSTR strUrl, LPCTSTR strPostData, CString &strResponse,CString &Err);
- void Clear();
-
- static HANDLE m_hThread; // 线程句柄
- static unsigned m_uiThreadID; // 线程id
- static bool m_bRun; // 当前线程是否结束
- static HANDLE g_Event; // 触发事件句柄
- static CAttemperEngineSink* pCAttemperEngineSink; //调度钩子
- static void* curl;
- //请求信息
- static std::unordered_map<DWORD, GETDUILIELIST> GetData; //请求信息
- //锁
- static CCriticalSection m_CriticalSection; //线程锁
-
- private:
- CInternetSession *m_pSession;
- CHttpConnection *m_pConnection;
- CHttpFile *m_pFile;
- public:
- // 获取订单编号
- static CString OnGetDingDan(GETDUILIE Data, CString csUnionID, DWORD dwSocketID);
- // 获取订单列表
- static CString OnGetDingDanList(CString csUnionID, DWORD dwSocketID);
- // 绑定代理
- static CString OnGetBangDing(CString csUnionID, DWORD dwSocketID, DWORD dDaiLi, DWORD dUserID, CString Name, CString Head);
- // 分享通知
- static CString OnGetShare(CString csUnionID, DWORD UserID, DWORD dwXinYong);
- //玩家自主解绑代理
- static CString OnUntieAgent(CString csUnionID, DWORD dwUserID, DWORD dwAccurency, DWORD dwDaiLiID, DWORD dwSocketID);
- //扫码绑定
- static CString OnGetDaiLiID(CString csUnionID, DWORD dwUserID, DWORD dwSocketID, CString csUserName);
- //获取验证码
- static bool OnGetIphoneNumber(CString csIphoneNum, DWORD dwUserID, DWORD dwSocketID);
- //校验验证码、
- static CString OnVerfIphoneNumberCode(CString csIphoneNum,/*DWORD dVerfCode,*/CString csVerfCode, DWORD dwSocketID);
-
- static CString OnExeInfo(CString csIphoneNum,CString csInfo, DWORD dwSocketID);
- //抽奖记录入库
- static CString OnLotteryResult(DWORD dwUserID, WORD wLotteryID, WORD wLotteryType, CString csIphoneNum, DWORD dwRecordID, DWORD dwSocketID);
- static CString OnLotteryResultEx(DWORD dwUserID, CString csAddressee, CString csAddress, CString csIphoneNum, DWORD dwRecordID, DWORD dwSocketID);
- //分享闲聊,俱乐部,桌子号,玩家信息
- static CString OnFenXiangXianLiao(TCHAR WanFTitle[33], DBR_GR_ClubRecordXianLiao FenXiangRecord);
-
- public:
- /**
- * @brief HTTP POST请求
- * @param strUrl 输入参数,请求的Url地址,如:http://www.baidu.com
- * @param strPost 输入参数,使用如下格式para1=val1¶2=val2&…
- * @param strResponse 输出参数,返回的内容
- * @return 返回是否Post成功
- */
- int Post(const std::string & strUrl, const std::string & strPost, std::string & strResponse);
-
- /**
- * @brief HTTP GET请求
- * @param strUrl 输入参数,请求的Url地址,如:http://www.baidu.com
- * @param strResponse 输出参数,返回的内容
- * @return 返回是否Post成功
- */
- int Get(const std::string & strUrl, std::string & strResponse);
-
- /**
- * @brief HTTPS POST请求,无证书版本
- * @param strUrl 输入参数,请求的Url地址,如:https://www.alipay.com
- * @param strPost 输入参数,使用如下格式para1=val1¶2=val2&…
- * @param strResponse 输出参数,返回的内容
- * @param pCaPath 输入参数,为CA证书的路径.如果输入为NULL,则不验证服务器端证书的有效性.
- * @return 返回是否Post成功
- */
- int Posts(const std::string & strUrl, const std::string & strPost, std::string & strResponse, const char * pCaPath = NULL);
-
- /**
- * @brief HTTPS GET请求,无证书版本
- * @param strUrl 输入参数,请求的Url地址,如:https://www.alipay.com
- * @param strResponse 输出参数,返回的内容
- * @param pCaPath 输入参数,为CA证书的路径.如果输入为NULL,则不验证服务器端证书的有效性.
- * @return 返回是否Post成功
- */
- int Gets(const std::string & strUrl, std::string & strResponse, const char * pCaPath = NULL);
-
- public:
- void SetDebug(bool bDebug);
-
- private:
- bool m_bDebug;
- };
-
- #endif // HTTPCLIENT_H
-
|