HttpTransByGet.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "stdafx.h"
  2. #include "HttpTransByGet.h"
  3. CHttpTransByGet::CHttpTransByGet(void)
  4. {
  5. m_lpData = NULL;
  6. m_dwDataSize = 0;
  7. m_dwWriteIndex = 0;
  8. }
  9. CHttpTransByGet::~CHttpTransByGet(void)
  10. {
  11. }
  12. DWORD CHttpTransByGet::GetDataSize()
  13. {
  14. return m_dwDataSize;
  15. }
  16. BOOL CHttpTransByGet::GetData(LPVOID lpBuffer, DWORD dwBufferSize, DWORD& dwWrite)
  17. {
  18. BOOL bContinue = TRUE;
  19. dwWrite = 0;
  20. if (m_dwDataSize > m_dwWriteIndex + dwBufferSize)
  21. {
  22. dwWrite = dwBufferSize;
  23. }
  24. else
  25. {
  26. dwWrite = m_dwDataSize - m_dwWriteIndex;
  27. bContinue = FALSE;
  28. }
  29. if (0 != memcpy_s(lpBuffer, dwBufferSize, (LPBYTE)m_lpData + m_dwWriteIndex, dwWrite))
  30. {
  31. bContinue = FALSE;
  32. }
  33. return bContinue;
  34. }
  35. BOOL CHttpTransByGet::TransDataToServer(const std::wstring& wstrUrl, DWORD dwTimeout, VecStParam& vecParam, LPVOID lpData, DWORD dwDataLenInBytes)
  36. {
  37. m_lpData = lpData;
  38. m_dwDataSize = dwDataLenInBytes;
  39. m_vecParam.assign(vecParam.begin(), vecParam.end());
  40. m_dwWriteIndex = 0;
  41. return TransmiteData(wstrUrl, eGet, dwTimeout);
  42. }
  43. std::wstring CHttpTransByGet::GenerateExtInfo(const VecStParam& VecExtInfo)
  44. {
  45. std::wstring wstrExtInf;
  46. for (VecStParamCIter it = VecExtInfo.begin(); it != VecExtInfo.end(); it++)
  47. {
  48. if (false == wstrExtInf.empty())
  49. {
  50. wstrExtInf += L"&";
  51. }
  52. wstrExtInf += it->wstrKey;
  53. wstrExtInf += L"=";
  54. wstrExtInf += it->wstrValue;
  55. }
  56. return wstrExtInf;
  57. }
  58. BOOL CHttpTransByGet::ModifyRequestHeader(HINTERNET hRequest)
  59. {
  60. std::wstring wstrHeader[] = { L"Content-type: application/x-www-form-urlencoded\r\n" };
  61. for (size_t i = 0; i < ARRAYSIZE(wstrHeader); i++)
  62. {
  63. WinHttpAddRequestHeaders(hRequest, wstrHeader[i].c_str(), wstrHeader[i].length(), WINHTTP_ADDREQ_FLAG_ADD);
  64. }
  65. return TRUE;
  66. }
  67. VOID CHttpTransByGet::AddExtInfo(VecStParam& VecExtInfo)
  68. {
  69. for (VecStParamCIter it = m_vecParam.begin(); it != m_vecParam.end(); it++)
  70. {
  71. VecExtInfo.push_back(*it);
  72. }
  73. }