123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #include "DataBuriedPoint.h"
- #include <string>
- #pragma region 请求数据
- HttpRequest::HttpRequest(const std::string& ip, int port) : m_ip(ip), m_port(port)
- {
- }
- HttpRequest::~HttpRequest()
- {
- CloseSocket();
- }
- SOCKET HttpRequest::CreateSocket()
- {
- WSADATA wData;
- ::WSAStartup(MAKEWORD(2, 2), &wData);
- SOCKET clientSocket = socket(AF_INET, 1, 0);
- return clientSocket;
- }
- int HttpRequest::ConnectSocket(SOCKET socket, std::string ip)
- {
- struct sockaddr_in ServerAddr = { 0 };
- ServerAddr.sin_addr.s_addr = inet_addr(ip.c_str());
- ServerAddr.sin_port = htons(m_port);
- ServerAddr.sin_family = AF_INET;
- //返回值为0,为连接成功
- return connect(socket, (sockaddr*)&ServerAddr, sizeof(ServerAddr));
- }
- int HttpRequest::SendData(SOCKET socket, std::string strSend)
- {
- //返回值大于0,为发送成功
- return send(socket, strSend.c_str(), strSend.length(), 0);
- }
- void HttpRequest::CloseSocket()
- {
- ::WSACleanup();
- }
- std::string HttpRequest::RequesStr(std::string req, std::string data)
- {
- std::string sRequest =
- " HTTP/1.1\r\n"
- "Host: ipAddress\r\n"
- "Content-Type: application/json\r\n"
- "Content-Length: " + std::to_string(data.size()) + "\r\n"
- "Connection: close\r\n\r\n" + data;
- std::string strSend = "POST " + req + sRequest;
- return strSend;
- }
- std::string HttpRequest::HttpPost(std::string req, std::string data)
- {
- std::string str = "";
- try
- {
- SOCKET clientSocket = CreateSocket();
- int states = ConnectSocket(clientSocket, m_ip);
- if (states == 0)
- {
- std::string strSend = RequesStr(req, data);
- states = SendData(clientSocket,strSend);
- if (states > 0)
- {
- }
- else
- {
- CloseSocket();
- return "Send Failed";
- }
- // 接收
- char bufRecv[3069] = { 0 };
- states = recv(clientSocket, bufRecv, 3069, 0);
- CloseSocket();
- if (states > 0)
- {
-
- str = bufRecv;
- }
- else
- {
- return "Recv Failed";
- }
- }
- else
- {
- states = WSAGetLastError();
- }
-
- }
- catch (...)
- {
- CloseSocket();
- return "Error";
- }
- return str;
- }
- #pragma endregion
- BuriedPos::BuriedPos(const std::string& ip, int port)
- {
- request = new HttpRequest(ip, port);
- }
- BuriedPos::BuriedPos()
- {
- request = new HttpRequest("139.196.224.157", 3018);
- }
- BuriedPos::~BuriedPos(void)
- {
- delete request;
- }
- //属于外部调用,返回埋点数据发送给服务端
- void BuriedPos::SendBury(std::string key, std::string content)
- {
- std::string testjson = "{\"data\":{\"subscription\":{\"app_code\":\"com.brother.pdfreaderprofree.windows\"},\"device\":{\"unique_sn\":\"05956BDD6E7C1826657FF4638DB9D9CB\",\"app_version\":\"2.3.9\",\"platform\":\"EXE\",\"language\":\"en - US\",\"time_zone\":\"Ulaanbaatar Standard Time\",\"os\":\"10.0.19044\",\"model\":\"Dell Inc.Inspiron 7591\"}}}";
- request->HttpPost("/api/auth_devices/verify", testjson);
- }
- //服务端对应Json数据格式内容
- void BuriedPos::CreateJson()
- {
- //示例
- //根节点
- Json::Value root;
- //根节点属性
- root["name"] = Json::Value("shuiyixin");
- root["age"] = Json::Value(21);
- root["sex"] = Json::Value("man");
- //子节点
- Json::Value friends;
- //子节点属性
- friends["friend_name"] = Json::Value("ZhaoWuxian");
- friends["friend_age"] = Json::Value(21);
- friends["friend_sex"] = Json::Value("man");
- //子节点挂到根节点上
- root["friends"] = Json::Value(friends);
- //数组形式
- root["hobby"].append("sing");
- root["hobby"].append("run");
- root["hobby"].append("Tai Chi");
- auto d = root.toStyledString();
- }
|