Cocos2d-x笔记(四)CCHttpCleint网络请求

网络传输方式常用的有socket、Http两种方式可以使用。

使用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>



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值