cocos2dx CCHttpclient与java后台通信

来源:互联网 发布:linux eagle 编辑:程序博客网 时间:2024/05/17 01:18

一,本次测试的后台是用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->reqTypeif (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());}


0 0
原创粉丝点击