您的位置:首页 > 理论基础 > 计算机网络

cocos2dx CCHttpclient与java后台通信

2014-04-13 14:54 375 查看
一,本次测试的后台是用java的springmvc框架写的。

二,CChttpClient在下载的cocos2dx的包中有现成的例子。

三,cocos2dx带的cchttpclient例子在Testcpp/ExtentionsTest/NetworkTest下面。

我写的代码如下:

HttpUtils.h类,这个类名是自己定义的。

#ifndef __HTTP_UTILS__
#define __HTTP_UTILS__
#include "cocos2d.h"
#include "cocos-ext.h"
#include <string>
using namespace cocos2d;
using namespace std;
using namespace cocos2d::extension;
class HttpUtils :public CCNode{
public:
HttpUtils();
~HttpUtils();

void sendData(string* data);
void onHttpRequestCompleted(CCHttpClient *sender, CCHttpResponse *response);
string getData();
public:
//后台返回的字符串,,这里必须声明成static类弄的,要不然在回调函数结束了,这个值就不存在了
static string m_data;

};
#endif // !__HTTP_UTILS__


HttpUtil.h的实现类,HttpUtils.cpp
#include "HttpUtils.h"

HttpUtils::HttpUtils(){

}
//初始化数据
string HttpUtils::m_data = "";
HttpUtils::~HttpUtils(){

}
string HttpUtils::getData(){
return m_data;
}
//向服务器发送数据
void HttpUtils::sendData(string* data){
CCHttpRequest* request = new CCHttpRequest();
request->setUrl("http://localhost:8080/GameTechnology/user/cocos2dTest");
request->setRequestType(CCHttpRequest::kHttpPost);
request->setRequestData(data->c_str(),data->length());
request->setResponseCallback(this, httpresponse_selector(HttpUtils::onHttpRequestCompleted));
request->setTag("GET test1");
CCHttpClient::getInstance()->send(request);
request->release();
}
//http请求的回周函数,用于接收服务器传来的数据
void HttpUtils::onHttpRequestCompleted(CCHttpClient *sender, CCHttpResponse *response){
if (!response)
{
return;
}

// You can get original request type from: response->request->reqType
if (0 != strlen(response->getHttpRequest()->getTag()))
{
CCLog("%s completed", response->getHttpRequest()->getTag());
}

int statusCode = response->getResponseCode();
char statusString[1024] = {};
sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
CCLog("response code: %d", statusCode);

if (!response->isSucceed())
{
CCLog("response failed");
CCLog("error buffer: %s", response->getErrorBuffer());
return;
}
std::vector<char> *buffer = response->getResponseData();
this->m_data = string(buffer->begin(),buffer->end());
CCLog("sss:%s",m_data.c_str());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2dx cchttpclient
相关文章推荐