Cocos2d-x笔记(四)CCHttpCleint网络请求
2013-10-21 10:17
916 查看
网络传输方式常用的有socket、Http两种方式可以使用。
使用socket需要处理很多细节,因此需要在socket传输之上再根据需求包装一层,以降低使用复杂度。
Http则隐藏了细节,采用主从式、非对等的的传输方式。Cocos2d-x推荐使用的网络传输库是CURL,它支持FTP、HTTP、LDAP等传输方式,还可以跨平台使用。
CURL提供了阻塞传输(curl_easy_)和(非阻塞传输)curl_mutl_两种方式。CCHttpClient对CURL进行封装,采用http的方式传输数据。
1.使用HttpClient需要导入头文件
2.编写网络请求的代码
RequestType共有五种模式:kHttpGet、kHttpPost、kHttpPut、kHttpDelete、kHttpUnkown。kHttpUnkown是默认的请求模式。
Tag用于标示此次网络请求。
onHttpComplete是一个回调函数,用于返回的数据。
3.编写网络回调函数
CCHttpResponse封装了网络请求的结果,所以回调函数中主要是取出CCHttpResponse中的数据
PS:编译到android手机上时,需要添加网络权限
使用socket需要处理很多细节,因此需要在socket传输之上再根据需求包装一层,以降低使用复杂度。
Http则隐藏了细节,采用主从式、非对等的的传输方式。Cocos2d-x推荐使用的网络传输库是CURL,它支持FTP、HTTP、LDAP等传输方式,还可以跨平台使用。
CURL提供了阻塞传输(curl_easy_)和(非阻塞传输)curl_mutl_两种方式。CCHttpClient对CURL进行封装,采用http的方式传输数据。
1.使用HttpClient需要导入头文件
#include "cocos-ext.h"
2.编写网络请求的代码
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.编写网络回调函数
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手机上时,需要添加网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
相关文章推荐
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
- Cocos2d-x利用CCHttpRequest获取网络图片并显示
- Android使用HttpURLConnection发送网络请求(笔记)
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【cocos2d-js网络教程篇】cocos2d-js http网络请求
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- cocos2d-x CCHttpClient 访问网络
- 【Cocos2d-x游戏引擎开发笔记】CCHttpRequest联网
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【cocos2d-js教程】cocos2d-js http网络请求
- Cocos2d-x 3.2 Lua示例 XMLHttpRequestTest(Http网络请求)
- cocos2d-x-2.0.4的网络连接库CCHttpClient的BUG
- JSP网络编程-请求和响应-HttpServletRequest-HttpServletResponse-学习笔记
- cocos2d-x CCHttpRequest获取网络图片并显示
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【cocos2d-js教程】cocos2d-js http网络请求
- Cocos2d-X学习——CCHttpClient网络访问被防火墙拦截
- Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)