HttpClientSyn.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include <string>
  3. #include <WINDOWS.H>
  4. #include <winhttp.h>
  5. #include <vector>
  6. typedef struct _StParam_{
  7. std::wstring wstrKey;
  8. std::wstring wstrValue;
  9. }StParam, *PStParam;
  10. typedef std::vector<StParam> VecStParam;
  11. typedef VecStParam::iterator VecStParamIter;
  12. typedef VecStParam::const_iterator VecStParamCIter;
  13. enum EType{
  14. eGet,
  15. ePost,
  16. eUpload,
  17. };
  18. class CHttpClientSyn
  19. {
  20. public:
  21. CHttpClientSyn();
  22. ~CHttpClientSyn(void);
  23. CString m_strErrorDescriptor;
  24. public:
  25. BOOL TransmiteData(const std::wstring& wstrUrl, EType eType, DWORD dwTimeout);
  26. VOID ClearEvn();
  27. BOOL ReceiveData(LPBYTE lpBuffer, DWORD& dwBufferSize);
  28. private:
  29. BOOL InitializeHttp(const std::wstring& wstrUrl, DWORD dwTimeout);
  30. VOID UninitializeHttp();
  31. BOOL ReceiveData();
  32. BOOL TransmiteData(EType eType);
  33. VOID ParseParams(const std::wstring& wstrExtraInfo);
  34. BOOL TransmiteDataToServerByGet();
  35. BOOL TransmiteDataToServerByPost();
  36. BOOL TransmiteDataToServerByUpload();
  37. private:
  38. virtual DWORD GetDataSize() = 0;
  39. virtual BOOL GetData(LPVOID lpBuffer, DWORD dwBufferSize, DWORD& dwWrite);
  40. virtual BOOL ModifyRequestHeader(HINTERNET hRequest) = 0;
  41. virtual VOID AddExtInfo(VecStParam& VecExtInfo) = 0;
  42. virtual std::wstring GenerateExtInfo(const VecStParam& VecExtInfo) = 0;
  43. private:
  44. HINTERNET m_hSession;
  45. HINTERNET m_hConnect;
  46. HINTERNET m_hRequest;
  47. DWORD m_dwTimeout;
  48. LPBYTE m_lpReceiveData;
  49. DWORD m_dwReceiveDataLength;
  50. std::wstring m_wstrUrlPath;
  51. VecStParam m_VecExtInfo;
  52. };