最近在做学校的课题设计,我是做一个需要网络传输数据的cocos2dx游戏,这两天就在看网络连接部分。
服务器端有同学做好了,用的是y11框架,代码用php写。我需要做的是在客户端部分的登录、注册,游戏出场阵容的上传和下载,和比赛结果的上传。
我是用引擎的httprequest。我从网上查了些资料,大家首先看注册的方法的内容:
HttpRequest* request = new HttpRequest();
request->setUrl("地址");
request->setRequestType(HttpRequest::Type::POST);
request->setResponseCallback(this, httpresponse_selector(Register::onHttpRequestCompleted));
char postData[500]="";
sprintf(postData, "username=%s&password=%s", editBoxname->getText(), editBoxPassword->getText());
request->setRequestData(postData, strlen(postData));
request->setTag("POST test1");
HttpClient::getInstance()->send(request);
request->release();
这里post和get的区别就是地址后面有没有参数,get是写在后面的,post是放在了请求数据里。
如果请求成功,就调用onHttpRequestCompleted回调函数。
if (!response) {
return;
}
if (0 != strlen(response->getHttpRequest()->getTag())) {
log("%s completed", response->getHttpRequest()->getTag());
}
long statusCode = response->getResponseCode();
char statusString[64] = {};
sprintf(statusString, "HTTP Status Code: %ld, tag = %s", statusCode, response->getHttpRequest()->getTag());
//log("response code: %ld", statusCode);
log("%s",statusString);
if (!response->isSucceed()) {
log("response failed");
log("error buffer: %s", response->getErrorBuffer());
return;
}
std::vector<char>* buffer = response->getResponseData();
std::string infoStr = "";
infoStr = std::string(buffer->begin(), buffer->end());
log("info: %s", infoStr.c_str());
这里response->getResponseData()就是获取接收到的数据,这个数据如果是json就解析一下。
具体原理请看这篇文章http://blog.csdn.net/duotianshi86/article/details/10216383,是以cocos2dx2.x的版本来看的,但基本原理应该是不变的。