Cocos2d-x下HTTP网络通讯
2024-10-19 07:33:50
引入头文件:
#include "cocos-ext.h"
添加下载按钮:
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"exit.png",
"exit.png",
this,
menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/ ,
origin.y + pCloseItem->getContentSize().height/)); // create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, );
添加回调函数:
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
std::vector<std::string> headers;
headers.push_back("Content-Type: application/json; charset=utf-8");
// post data
const char* postData = "id=1&name=oka";
unsigned int postDataLen = strlen(postData); CCHttpRequest* request = new CCHttpRequest();
request->setUrl("http://127.0.0.1/test.php");
request->setRequestType(CCHttpRequest::kHttpPost);
request->setResponseCallback(this, httpresponse_selector(HelloWorld::onHttpRequestCompleted));
request->setRequestData(postData, postDataLen);
request->setTag("GET test");
request->setHeaders(headers);
CCHttpClient::getInstance()->setTimeoutForConnect();
CCHttpClient::getInstance()->send(request);
request->release(); }
按钮的回调函数里向服务器发起http请求了,request->setResponseCallback(this, httpresponse_selector(HelloWorld::onHttpRequestCompleted))一行代码,向请求结束时添加了onHttpRequestCompleted回调函数
处理网络请求的回调函数:
void HelloWorld::onHttpRequestCompleted(cocos2d::CCNode *sender ,void *data)
{
CCHttpResponse* response = (CCHttpResponse*)data;
if(!response)
{
return;
} if( != 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());
CCString* responseData = CCString::create(temp);
CCLog("%s", responseData->getCString());
}
执行后Log输出框中就可以看到请求结果了。
记得把request->setUrl("http://127.0.0.1/test.php");替换成测试的URL地址。
最新文章
- Visual Studio中UnitTesting单元测试模板代码生成
- ListView优化为何ViewHolder用static类(转载)
- fidder 使用教程
- springMVC操作mongoDB增删改查
- golang学习之指针、内存分配
- 指针之 *((volatile unsigned long *)(x))解析
- 【Cocos2d TestCpp实例模仿一】-- ActionsTest
- PAT 天梯赛 L1-009 N个数求和
- mySQL简单操作(三)
- 调用接口,发送https请求
- HTML查漏补缺 【未完】
- Javascript - ExtJs - 整合百度文章编辑器
- CSS---伪类选择器
- LEO原创-FMX之你不知道的ARC
- easyUI tree 自定义图标
- mysql中查看一个字段中,有几个逗号
- [转]避免头文件重复包含以及#ifndef 与 #program once 的区别
- 七夕情人节表白-纯JS实现3D心形+图片旋转
- Google工作原理
- LoadRunner 使用介绍
热门文章
- sublime中设置view_in_browser
- 11. 变量提升 &;&; 执行上下文
- SprimgMVC学习笔记(七)—— 上传图片
- C语言中变量的存储类型
- 创建本地Git并提交到码云
- 【ACM】蛇形填数 - 逻辑怪
- Dev Express Report 学习总结(六)Dev Express Reports自定义Summary
- MongoDB系列—— Window 搭建Mongodb 集群
- Selenium+Python+Webdriver:保存截图到指定文件夹
- VS 快速插入无参构造器