Cocos2d-x3.8.1网络编程(HTTP)

发表于2018-03-19
评论0 1.5k浏览
Coco2d-x游戏引擎对HTTP协议进行了封装整合,为了让大家都能掌握,下面就和大家介绍下网络编程中的接口类的使用。

使用前加入头文件,命名空间
#include "cocos2d.h"
#include "network/HttpClient.h"
#include "network/HttpRequest.h"
#include "network/HttpResponse.h"

USING_NS_CC;
using namespace cocos2d::network;

接下来对一些接口的简单介绍
bool HelloWorld::init()
{
 //////////////////////////////
    // 1. super init first
   if ( !Layer::init() )
   {
        return false;
    }

创建请求对象
auto request=new HttpRequest();
request->setUrl("http://www.liujunliang.com.cn");
request->setTag("get");

请求方式
//本例以GET请求方式,常用的还有POST等........
request->setRequestType(HttpRequest::Type::GET);

发送内容
char value[16]="HelloWord";
request->setRequestData(value,strlen(value));
request->setResponseCallback(CC_CALLBACK_2(HelloWorld::result,this));

创建客户端对象
//使用单例模式目的为了让类的一个对象成为系统中的唯一实例
auto client=HttpClient::getInstance();
client->setTimeoutForConnect(60);
client->setTimeoutForRead(120);
//client2->sendImmediate(postReq);//即时发送即时应答
client->send(request);
request->release();//回收请求
    return true;
}
void HelloWorld::result(cocos2d::network::HttpClient* client,cocos2d::network::HttpResponse* response)
{
//返回404:服务器没有内容,400:服务器错误,200:访问正常
log("Code:%d",response->getResponseCode());

获取请求对象进而获得标签
log("tag:%s",response->getHttpRequest()->getTag());
if (response->isSucceed())
{
std::stringstream stream;//C++字符流
std::vector<char>* buffer=response->getResponseData();
for (int i = 0; i < buffer->size(); i++)
{
stream<<(*buffer)[i];
}
std::string str=stream.str();
log("value:%s",str.c_str());
}
else
{
log("error:%s",response->getErrorBuffer());
}
}

这是控制台输出窗口的输出内容(VS2012)

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引