中间件底层,websocket

HttpClient.h 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include <string>
  3. #include <codecvt>
  4. // curl
  5. #define USE_OPENSSL
  6. #define CURL_STATICLIB
  7. #include <curl/curl.h>
  8. #pragma comment(lib, "ws2_32.lib")
  9. #pragma comment(lib, "wldap32.lib")
  10. #pragma comment(lib, "libcurl.lib")
  11. #pragma comment(lib,"Crypt32.lib")
  12. //#include <json/json.h>
  13. //#pragma comment(lib,"jsoncpp_static.lib")
  14. class CHttpClient
  15. {
  16. public:
  17. CURLcode curl_post_req(const char* url, const char* postParams, std::string &response);
  18. static CHttpClient* GetInStance() { return &sp; }
  19. private:
  20. CHttpClient() {};
  21. CHttpClient(const CHttpClient&);
  22. CHttpClient& operator = (const CHttpClient&) = delete;
  23. ~CHttpClient() {};
  24. static size_t req_reply(void * ptr, size_t size, size_t nmemb, void * stream);
  25. static std::wstring string_to_wstring(const std::string &s)
  26. {
  27. using default_convert = std::codecvt<wchar_t, char, std::mbstate_t>;
  28. static std::wstring_convert<default_convert>conv(new(std::nothrow) default_convert("CHS"));
  29. return conv.from_bytes(s);
  30. }
  31. static std::string ansi_to_utf8(const std::string &s)
  32. {
  33. static std::wstring_convert<std::codecvt_utf8<wchar_t> > conv;
  34. return conv.to_bytes(string_to_wstring(s));
  35. }
  36. static std::string wstring_to_string(const std::wstring &s)
  37. {
  38. using default_convert = std::codecvt<wchar_t, char, std::mbstate_t>;
  39. static std::wstring_convert<default_convert>conv(new(std::nothrow) default_convert("CHS"));
  40. return conv.to_bytes(s);
  41. }
  42. static std::string utf8_to_ansi(const std::string& s)
  43. {
  44. static std::wstring_convert<std::codecvt_utf8<wchar_t> > conv;
  45. return wstring_to_string(conv.from_bytes(s));
  46. }
  47. static CHttpClient sp;
  48. };