Cocos2d-x3.8.1网络编程(HTTP)
发表于2018-03-19
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)