一、如何使用

//发送接口
void CmdHelper::postRequest(const char* cmdTag, const char* url, const char* postData, size_t postDataLengt)
{
CCHttpRequest* request = new CCHttpRequest();
request->setTag(cmdTag);
request->setUrl(url);
request->setResponseCallback(this, httpresponse_selector(CmdHelper::onRequestRsp)); //set request type: get/post/put/delete
request->setRequestType(CCHttpRequest::kHttpPost); //set header
std::vector<std::string> headers;
headers.push_back("Content-Type: application/json; charset=utf-8");
request->setHeaders(headers); //set body data, POST only
request->setRequestData(postData, postDataLengt); //set time out
CCHttpClient::getInstance()->setTimeoutForConnect(TIMEOUT_CONNECT);
CCHttpClient::getInstance()->setTimeoutForRead(TIMEOUT_READ);
CCHttpClient::getInstance()->send(request);
// don't forget to release it, pair to new
request->release();
} #define CMD_DOWNLOAD "CMD_DOWNLOAD"
#define URL_DOWNLOAD "http://192.168.2.122:9001/star/downsolution"
std::string data = "";
//发送post请求时,调用如下接口即可
postRequest(CMD_DOWNLOAD, URL_DOWNLOAD, data.c_str(), data.length()); //接收回调
void CmdHelper::onRequestRsp(CCHttpClient* client, CCHttpResponse* response)
{
if (!response)
{
CCLOG("ERROR: %s ---> null response", __FUNCTION__);
return;
} std::string tag = response->getHttpRequest()->getTag();
int statusCode = response->getResponseCode();
CCLOG("%s ---> response code: %d, tag = %s", __FUNCTION__, statusCode, tag.c_str()); std::string dataBody;
if (!response->isSucceed())
{
CCLOG("response failed");
CCLOG("error buffer: %s", response->getErrorBuffer());
//this->setLastNetworkError(response->getErrorBuffer());
}
else
{
// dump data
std::vector<char> *buffer = response->getResponseData();
dataBody.assign(buffer->begin(), buffer->end());
//CCLOG("%s", dataBody.c_str());
} //dispatch
if (CMD_DOWNLOAD == tag)
{
this->onDownloadTaskSolutionRsp(dataBody.c_str(), dataBody.size());
}
else
{
CCLOG("%s ---> error branch, cmd tag = %d", __FUNCTION__, tag.c_str());
}
}

二、遇到的坑

1. 注意传输的编码格式
如上示例中,我们使用的utf-8编码,但是在http传输二进制数据的时候,服务器收到的数据变大了,所以要么改传输的编码格式,要么把本地要传输的二进制数据转码(比如我们用的base64)。

cocos2d-x中使用Http的更多相关文章

  1. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...

  2. 如何在Cocos2D游戏中实现A*寻路算法(六)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  3. 如何在Cocos2D游戏中实现A*寻路算法(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  4. 如何在Cocos2D游戏中实现A*寻路算法(八)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  5. 如何在Cocos2D游戏中实现A*寻路算法(七)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  6. 如何在Cocos2D游戏中实现A*寻路算法(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  7. 如何在Cocos2D游戏中实现A*寻路算法(四)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  8. 如何在Cocos2D游戏中实现A*寻路算法(三)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  9. 如何在Cocos2D游戏中实现A*寻路算法(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  10. Cocos2D场景中对象引用为nil时的判断

    如果该对象在SpriteBuilder中属性中设置了name,则检查是否 [self.scene getChildByName:@"theNameOfTheNode" recurs ...

随机推荐

  1. Hadoop2.0新特性-持续追加【干货】

    1.NAME NODE HA 2.NAME NODE Federation 3.HDFS 快照(目录快照) 4.HDFS 缓存 5.HDFS ACL 6.异构层级存储结构 -------------- ...

  2. scribe、chukwa、kafka、flume日志系统对比 -摘自网络

    1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁 ...

  3. the application could not be verified

    在iphone上安装app时,提示the application could not be verified 解决方式: 将iphone已有的这个app卸载,然后安装就可以了.

  4. 第二百四十三天 how can I 坚持

    制定的计划完成不了了,好多问题啊.又想当然了,晚上加了会班. 今天雾霾好严重,一出地铁大裤衩怎么没了.雾霾爆表啊. 还好现在刮大风了. 准备看<芈mi月传>了. 睡觉.

  5. 关于Js脚本的延迟执行

      关于标签,我们有一般会放在两个地方,一个是在标签的内部,另一个是放在前面.这一次我们着重讲解一下放在标签内部.在我们用Js操作DOM元素时,如果不延时执行,DOM元素其实是根本还没有被渲染出来的. ...

  6. Java设计模式系列之策略模式

    策略模式的定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化. 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化 ...

  7. JSF 2 dropdown box example

    In JSF, <h:selectOneMenu /> tag is used to render a dropdown box – HTML select element with &q ...

  8. Spring MVC SimpleUrlHandlerMapping example

    In Spring MVC application, the SimpleUrlHandlerMapping is the most flexible handler mapping class, w ...

  9. [iOS UI进阶 - 6.0] CALayer

    A.基本知识 1.需要掌握的 CALayer的基本属性 CALayer和UIView的关系 position和anchorPoint的作用   2.概念 在iOS中,你能看得见摸得着的东西基本上都是U ...

  10. Light oj 1197 - Help Hanzo (素数筛技巧)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 给你a和b求a到b之间的素数个数. 先在小区间素数筛,大区间就用类似素数筛的想法 ...