Cocos2d-x笔记 CCHttpCleint网络请求
来源:互联网 发布:vscode 绿色版 编辑:程序博客网 时间:2024/06/03 06:43
Cocos2d-x笔记 CCHttpCleint网络请求
网络传输方式常用的有socket、Http两种方式可以使用。
使用socket需要处理很多细节,因此需要在socket传输之上再根据需求包装一层,以降低使用复杂度。
Http则隐藏了细节,采用主从式、非对等的的传输方式。Cocos2d-x推荐使用的网络传输库是CURL,它支持FTP、HTTP、LDAP等传输方式,还可以跨平台使用。
CURL提供了阻塞传输(curl_easy_)和(非阻塞传输)curl_mutl_两种方式。CCHttpClient对CURL进行封装,采用http的方式传输数据。
1.使用HttpClient需要导入头文件
1
#include "cocos-ext.h"
2.编写网络请求的代码
1
2
3
4
5
6
CCHttpRequest* request = new CCHttpRequest();
request->setUrl("www.baidu.com");
request->setRequestType(CCHttpRequest::kHttpGet);
request->setTag("hettp test");
request->setResponseCallback(this,httpresponse_selector(HelloWorld::onHttpComplete));
CCHttpClient::getInstance()->send(request);
RequestType共有五种模式:kHttpGet、kHttpPost、kHttpPut、kHttpDelete、kHttpUnkown。kHttpUnkown是默认的请求模式。
Tag用于标示此次网络请求。
onHttpComplete是一个回调函数,用于返回的数据。
3.编写网络回调函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void HelloWorld::onHttpComplete(CCHttpClient* sender,CCHttpResponse* response)
{
if (!response)
{
return;
}
if (0 != strlen(response->getHttpRequest()->getTag()))
{
CCLog("%s completed", response->getHttpRequest()->getTag());
}
int statusCode = response->getResponseCode();
char statusString[64] = {};
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();
std::string str;
for (unsigned int i = 0; i < buffer->size(); i++)
{
char a = (*buffer)[i];
str.append(1,a);
}
CCLog(" buffer:%s",str.c_str());
}
CCHttpResponse封装了网络请求的结果,所以回调函数中主要是取出CCHttpResponse中的数据
PS:编译到android手机上时,需要添加网络权限
1
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
- Cocos2d-x笔记 CCHttpCleint网络请求
- Cocos2d-x笔记(四)CCHttpCleint网络请求
- cocos2d-x 网络请求
- cocos2d-x 网络请求
- cocos2d-x 网络请求 Http
- Cocos2d-x 3.2 Lua示例 XMLHttpRequestTest(Http网络请求)
- Cocos2d-x 3.2 Lua示例 XMLHttpRequestTest(Http网络请求)
- 15.cocos2d-x网络编程一(get、post请求)
- cocos2d-x http请求
- cocos2d js 请求网络
- cocos2d-x网络编程
- cocos2d-x网络编程
- Cocos2d-x 网络编程
- cocos2d-x网络编程 连接php服务器笔记1
- cocos2d-x网络编程 连接php服务器笔记2
- cocos2d-x网络编程 连接php服务器笔记3
- cocos2d-x网络编程 连接php服务器笔记3
- cocos2d-x网络编程 连接php服务器笔记4
- 在Flex4 Spark Application中设置图片背景解决方案汇总
- 关于linux系统下文件安装记录
- 为什么有时类的析构函数要定义为protected呢?
- uva 10361 - Automatic Poetry
- Android基于XMPP Smack openfire 开发的聊天室(七) 【成员状态、自身状态】
- Cocos2d-x笔记 CCHttpCleint网络请求
- Struts2 之拦截器interceptor(1)
- 在openwrt上安装webcam
- 怎样把QString转换为char *或者相反?
- Android开源项目(一)
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作
- error LNK1123: 转换到 COFF 期间失败
- 新建网站如何让搜索引擎快速收录
- org.apache.commons.io.FileUtils 文件处理相关