Cocos2dx之http网络请求

来源:互联网 发布:java教学视频百度云 编辑:程序博客网 时间:2024/05/16 12:01

先包含进extensions目录


CCHttpClient就是要用的类



客户端代码:

先引入头文件和命名空间

#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;

然后直接上点击发送按钮的回调函数请求网络

//点击按钮的回调函数void TestLayer::btncallback(CCObject* pSender){bool requestType_is_get = false;//采用get方式或者post方式if (requestType_is_get){CCHttpRequest* request = new CCHttpRequest();//创建请求对象string str1 = "http://127.0.0.1:8080/b_springmvc_cms/cocos2dx.do";string str2 = p_User_EditBox->getText();string str3 = p_Psw_EditBox->getText();string struser = "?username=";//注意在get方式请求后面加个?问号,再加上请求参数string strpsw = "&password=";str1 = str1 + struser + str2 + strpsw + str3;CCLOG("GetType data : %s", str1.c_str());request->setUrl(str1.c_str());//设置请求的url,username和password已经包含在url中request->setRequestType(CCHttpRequest::kHttpGet);//设置为Get模式request->setResponseCallback(this, httpresponse_selector(TestLayer::onHttpRequestCompleted));//设置响应的回调request->setTag("getTag");//可以在回调函数中取到这个tag字符串CCHttpClient::getInstance()->send(request);//发送请求request->release();//释放请求}else{CCHttpRequest* request = new CCHttpRequest();//创建请求对象string str1 = "http://127.0.0.1:8080/b_springmvc_cms/cocos2dx.do";string str2 = p_User_EditBox->getText();string str3 = p_Psw_EditBox->getText();string struser = "username=";string strpsw = "&password=";str2 = struser + str2 + strpsw + str3;request->setUrl(str1.c_str());//设置请求的url,只是请求页面的url,并不包含username和passwordrequest->setRequestType(CCHttpRequest::kHttpPost);//设置为Post模式request->setResponseCallback(this, httpresponse_selector(TestLayer::onHttpRequestCompleted));//设置响应的回调const char* postData = str2.c_str();CCLOG("PostType data : %s", postData);request->setRequestData(postData, strlen(postData));//设置请求数据,也就是username和passwordrequest->setTag("postTag");//可以在回调函数中取到这个tag字符串CCHttpClient::getInstance()->send(request);//发送请求request->release();//释放请求}}

接着就是响应的回调函数

void TestLayer::onHttpRequestCompleted(CCHttpClient* client, CCHttpResponse* response){if (!response->isSucceed())//如果响应失败,输出错误信息{CCString strError;strError.initWithFormat("Receive Error! \n%s\n", response->getErrorBuffer());m_labelStatusCode->setString(strError.getCString());return;}std::vector<char> *buffer = response->getResponseData();//接收响应信息string recieveData;for (unsigned int i = 0; i < buffer->size(); i++){recieveData += (*buffer)[i];}const char* tag = response->getHttpRequest()->getTag();CCLOG("Receive data : %s , tag=%s", recieveData.c_str(), tag);m_labelStatusCode->setString(recieveData.c_str());}

服务端代码:

服务端用的是tomcat,控制层用springmvc框架搭建的,这里指定了用只接受POST方式的请求

@Controllerpublic class Cocos2dxAction {@RequestMapping(value = "/cocos2dx.do",method=RequestMethod.POST)@ResponseBodypublic String cocos2dx(@RequestParam(value = "username") String username,@RequestParam(value = "password") String password) {System.out.println("recive success , username=" + username+ " , password=" + password);String string = "server message !";return string;}}

效果:

请求前:



请求后:



eclipse控制台输出的信息:



源码地址:http://download.csdn.net/detail/jackyvincefu/6713471

0 0