-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSmartHttpClient.cpp
108 lines (79 loc) · 2.86 KB
/
SmartHttpClient.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "SmartHttpClient.h"
USING_NS_CC;
USING_NS_CC_EXT;
namespace dxco {
void SmartHttpClient::get(const std::string& url, const std::string& body) {
CCHttpRequest* httpRequest = new CCHttpRequest();
httpRequest->setRequestType(CCHttpRequest::kHttpGet);
httpRequest->setUrl(url.c_str());
if (body.size()) {
httpRequest->setRequestData(body.c_str(), strlen(body.c_str()));
}
httpRequest->setResponseCallback(this,
httpresponse_selector(SmartHttpClient::onGetRequestCompleted));
httpRequest->setTag("GET test");
extension::CCHttpClient::getInstance()->setTimeoutForConnect(3000);
extension::CCHttpClient::getInstance()->send(httpRequest);
httpRequest->release();
}
void SmartHttpClient::post(const std::string& url, const std::string& body) {
CCHttpRequest* httpRequest = new CCHttpRequest();
httpRequest->setRequestType(CCHttpRequest::kHttpPost);
httpRequest->setUrl(url.c_str());
if (body.size()) {
httpRequest->setRequestData(body.c_str(), strlen(body.c_str()));
}
httpRequest->setResponseCallback(this,
httpresponse_selector(SmartHttpClient::onPostRequestCompleted));
httpRequest->setTag("POST test");
extension::CCHttpClient::getInstance()->setTimeoutForConnect(3000);
extension::CCHttpClient::getInstance()->send(httpRequest);
httpRequest->release();
}
void SmartHttpClient::onGetRequestCompleted(CCHttpClient* sender, void* data) {
CCHttpResponse* response = (CCHttpResponse*) data;
if (!response) {
return;
}
if (0 != strlen(response->getHttpRequest()->getTag())) {
CCLog("%s completed", response->getHttpRequest()->getTag());
}
int statusCode = response->getResponseCode();
CCLog("Status Code: %d", statusCode);
if (!response->isSucceed()) {
CCLog("response failed, error buffer: %s", response->getErrorBuffer());
return;
}
std::vector<char> *buffer = response->getResponseData();
std::string temp(buffer->begin(), buffer->end());
executeGet(temp);
}
void SmartHttpClient::onPostRequestCompleted(
cocos2d::extension::CCHttpClient* sender, void* data) {
CCHttpResponse* response = (CCHttpResponse*) data;
if (!response) {
return;
}
if (0 != strlen(response->getHttpRequest()->getTag())) {
CCLog("%s completed", response->getHttpRequest()->getTag());
}
int statusCode = response->getResponseCode();
CCLog("Status Code: %d", statusCode);
if (!response->isSucceed()) {
CCLog("response failed, error buffer: %s", response->getErrorBuffer());
return;
}
std::vector<char> *buffer = response->getResponseData();
std::string temp(buffer->begin(), buffer->end());
executePost(temp);
}
void SmartHttpClient::executeGet(std::string responseData) {
CCLog("GET DATA: %s", responseData.c_str());
}
void SmartHttpClient::executePost(std::string responseData) {
CCLog("POST DATA: %s", responseData.c_str());
}
SmartHttpClient::~SmartHttpClient() {
extension::CCHttpClient::getInstance()->destroyInstance();
}
} /* namespace dxco */