Cocos2dx HttpClient的导入使用
Cocos2dx HttpClient的导入使用
版本:vs2012 + cocos2dx 3.6 (win8.1)
参考 ccp-tests/../../HttpClientTest 例子(还是会遇到一些配置小问题的)
==================================
1.配置项目工程
新建项目工程(如:HttpDemo) 配置:
在Additional Include Directories(C\C++ -> General)添加路径
(cocos2dx并没有把#include路径全包括,需要自己小处理)
$(EngineRoot)
$(EngineRoot)cocos\network
在Additional Dependencies(Linker -> Input)添加lib库
libcurl_imp.lib
2.直接在直接在HelloWorldScene编程
注意头文件(基本没什么问题)
#include "cocos2d.h" #include "cocos-ext.h" #include "HttpClient.h" USING_NS_CC; USING_NS_CC_EXT; using namespace cocos2d::network;
HttpRequest 请求代码:
bool HelloWorld::init() { ... ... /* httpClient */ HttpRequest* request = new (std::nothrow) HttpRequest(); request->setUrl("http://just-make-this-request-failed.com"); request->setRequestType(HttpRequest::Type::GET); request->setResponseCallback(CC_CALLBACK_2(HelloWorld::onHttpRequestCompleted, this)); bool isImmediate = true; if (isImmediate) { request->setTag("GET immediate test1"); HttpClient::getInstance()->sendImmediate(request); }else { request->setTag("GET test1"); HttpClient::getInstance()->send(request); } request->release(); ... ... }
HttpResponse代码(在request请求设置的回调):
void HelloWorld::onHttpRequestCompleted(cocos2d::network::HttpClient *sender, cocos2d::network::HttpResponse *response) { if (!response) { return; } // You can get original request type from: response->request->reqType if (0 != strlen(response->getHttpRequest()->getTag())) { log("%s completed", response->getHttpRequest()->getTag()); } long statusCode = response->getResponseCode(); char statusString[64] = {}; sprintf(statusString, "HTTP Status Code: %ld, tag = %s", statusCode, response->getHttpRequest()->getTag()); log("response code: %ld", statusCode); if (!response->isSucceed()) { log("response failed"); log("error buffer: %s", response->getErrorBuffer()); return; } // dump data std::vector<char> *buffer = response->getResponseData(); log("Http Test, dump data: "); for (unsigned int i = 0; i < buffer->size(); i++) { log("%c", (*buffer)[i]); } log("\n"); if (response->getHttpRequest()->getReferenceCount() != 2) { log("request ref count not 2, is %d", response->getHttpRequest()->getReferenceCount()); } }
浙公网安备 33010602011771号