|
@@ -7,12 +7,12 @@
|
|
|
|
|
|
CNetWork::CNetWork() : m_http_ret(HTTPRET::http_f)
|
|
|
{
|
|
|
-
|
|
|
+ initSessionPool(100);
|
|
|
}
|
|
|
|
|
|
CNetWork::~CNetWork(void)
|
|
|
{
|
|
|
-
|
|
|
+ DestoryOneConnSessionPool();
|
|
|
}
|
|
|
|
|
|
int CNetWork::GetHttpStatus() {
|
|
@@ -142,6 +142,47 @@ void CNetWork::SetUrl(LPCSTR url)
|
|
|
m_url = url;
|
|
|
}
|
|
|
|
|
|
+void CNetWork::initSessionPool(int szie) {
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0 ; i < szie ; i++)
|
|
|
+ {
|
|
|
+ std::shared_ptr<cpr::Session> pp = std::make_shared<cpr::Session>();
|
|
|
+ m_session_vect.push_back(std::move(pp));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void CNetWork::DestoryOneConnSessionPool() {
|
|
|
+ for (auto &conn : m_session_vect)
|
|
|
+ {
|
|
|
+ std::move(m_session_vect.front());
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+std::shared_ptr<cpr::Session> CNetWork::GetSession() {
|
|
|
+ std::shared_ptr<cpr::Session> pp = nullptr;
|
|
|
+ m_mutx.lock();
|
|
|
+ if (m_session_vect.size() > 0)
|
|
|
+ {
|
|
|
+ pp = m_session_vect.front();
|
|
|
+ m_session_vect.pop_back();
|
|
|
+ }
|
|
|
+ m_mutx.unlock();
|
|
|
+ /*if (pp == nullptr)
|
|
|
+ {
|
|
|
+ pp = std::make_shared<cpr::Session>();
|
|
|
+ }*/
|
|
|
+
|
|
|
+ return pp;
|
|
|
+}
|
|
|
+
|
|
|
+void CNetWork::pullSession(std::shared_ptr<cpr::Session> &p) {
|
|
|
+ m_mutx.lock();
|
|
|
+ m_session_vect.push_back(p);
|
|
|
+ m_mutx.unlock();
|
|
|
+}
|
|
|
+
|
|
|
SStringA CNetWork::GetLastErrorA()
|
|
|
{
|
|
|
return SStringA().Format("%s", m_error_msg.c_str()).GetBuffer(0);
|
|
@@ -178,7 +219,7 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
|
|
|
|
|
|
|
|
|
std::string res_test = "";
|
|
|
-
|
|
|
+ auto session = GetSession();
|
|
|
int count = 3;
|
|
|
do
|
|
|
{
|
|
@@ -186,13 +227,25 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (parame.empty())
|
|
|
{
|
|
|
- r = cpr::Get(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
+ session->SetHeader(hander);
|
|
|
+ session->SetVerifySsl(false);
|
|
|
+ session->SetTimeout(cpr::Timeout{TIMEOUTE});
|
|
|
+ session->SetUrl(s.c_str());
|
|
|
+ //session->SetDebugCallback()
|
|
|
+ r = session->Get();
|
|
|
+ //r = cpr::Get(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
}
|
|
|
else {
|
|
|
- r = cpr::Get(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, ps, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
+ session->SetHeader(hander);
|
|
|
+ session->SetVerifySsl(false);
|
|
|
+ session->SetTimeout(cpr::Timeout{ TIMEOUTE });
|
|
|
+ session->SetUrl(s.c_str());
|
|
|
+ session->SetParameters(ps);
|
|
|
+ r = session->Get();
|
|
|
+ //r = cpr::Get(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, ps, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
}
|
|
|
if (r.status_code == 200 || r.status_code == 201)
|
|
|
{
|
|
@@ -216,10 +269,11 @@ std::string CNetWork::GetUrl(std::string path, std::vector<cpr::Parameter> param
|
|
|
break;
|
|
|
}
|
|
|
count--;
|
|
|
-
|
|
|
+ Logger::getSingletonPtr()->INFO("get ÖØÊÔ" + std::to_string(count) + "´ÎÊý");
|
|
|
|
|
|
} while (res_test.empty());
|
|
|
|
|
|
+ pullSession(session);
|
|
|
|
|
|
return res_test;
|
|
|
}
|
|
@@ -242,7 +296,7 @@ std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, s
|
|
|
|
|
|
|
|
|
std::string res_test = "";
|
|
|
-
|
|
|
+ auto session = GetSession();
|
|
|
int count = 3;
|
|
|
do
|
|
|
{
|
|
@@ -250,15 +304,26 @@ std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, s
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (parame.empty())
|
|
|
{
|
|
|
- r = cpr::Get(cpr::Url{ s.c_str() }, hander, cpr::VerifySsl{false}, cpr::Timeout{ 60 * 1000 });
|
|
|
+ //r = cpr::Get(cpr::Url{ s.c_str() }, hander, cpr::VerifySsl{false}, cpr::Timeout{ 60 * 1000 });
|
|
|
+ session->SetHeader(hander);
|
|
|
+ session->SetVerifySsl(false);
|
|
|
+ session->SetTimeout(cpr::Timeout{ TIMEOUTE });
|
|
|
+ session->SetUrl(s.c_str());
|
|
|
+ r = session->Get();
|
|
|
}
|
|
|
else {
|
|
|
- r = cpr::Post(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, cpr::Payload{ parame.begin(),parame.end() }, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
+ session->SetHeader(hander);
|
|
|
+ session->SetVerifySsl(false);
|
|
|
+ session->SetTimeout(cpr::Timeout{ TIMEOUTE });
|
|
|
+ session->SetUrl(s.c_str());
|
|
|
+ session->SetPayload(cpr::Payload{ parame.begin(),parame.end() });
|
|
|
+ r = session->Post();
|
|
|
+ //r = cpr::Post(cpr::Url{ s.c_str() }, cpr::VerifySsl{ false }, cpr::Payload{ parame.begin(),parame.end() }, hander, cpr::Timeout{ 60 * 1000 });
|
|
|
}
|
|
|
- Logger::getSingletonPtr()->DEBUG(r.url.c_str());
|
|
|
+ //Logger::getSingletonPtr()->DEBUG(r.url.c_str());
|
|
|
if (r.status_code == 200 || r.status_code == 201)
|
|
|
{
|
|
|
res_test = std::move(r.text);
|
|
@@ -287,7 +352,7 @@ std::string CNetWork::PostUrl(std::string path, std::vector<cpr::Pair> parame, s
|
|
|
|
|
|
|
|
|
} while (res_test.empty());
|
|
|
-
|
|
|
+ pullSession(session);
|
|
|
|
|
|
return res_test;
|
|
|
}
|
|
@@ -315,7 +380,7 @@ std::string CNetWork::Retrying(std::string path, std::vector<cpr::Parameter> par
|
|
|
|
|
|
|
|
|
} while (res_test.empty());
|
|
|
-
|
|
|
+
|
|
|
|
|
|
return res_test;
|
|
|
}
|