今天研究了一下如何利用curl同web服务器通信.
cocs2d-x中已经集成了curl,所以我们只要引入curl的头文件与静态库文件既可.
增加头文件:
在项目上右键属性->配置属性->C/C++->常规->附加包含目录->增加$(COCOS2D-XSDK)cocos2dx\platform\third_party\win32\curl目录.
$(COCOS2D-XSDK)是在以前的文章中定义的环境变量,详见cocos2d-x系列笔记(1)---安装篇.
增加静态库文件:
在项目上右键属性->配置属性->链接器->输入->附加依赖项->增加libcurl_imp.lib.
实现代码如下:
void HelloWorld::curlTest() { CURL *curl; //定义curl对象 CURLcode res; //定义执行后返回码 char buffer[10]; curl = curl_easy_init(); //初始化curl对象 if(curl) { curl_easy_setopt(curl,CURLOPT_URL,"http://localhost:8080/BSUGameServer001/HelloServlet"); //设置访问url curl_easy_setopt(curl,CURLOPT_POSTFIELDS,"no=1111111111"); //设置post的数据 curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION, &HelloWorld::process_data); //设置服务器返回数据后执行函数 curl_easy_setopt(curl,CURLOPT_POST,1); //设置本次访问为post方式 res = curl_easy_perform(curl); //获得返回码 curl_easy_cleanup(curl); //清理curl资源 if(res == 0) CCLOG("0 response"); else { sprintf(buffer,"code: %i",res); CCLOG(buffer); } } } size_t HelloWorld::process_data(uint8_t *buffer,size_t size,size_t nmemb,void *stream) { //打印收到的数据 CCLOG((const char *)buffer); //返回数据长度 size_t sizes = size*nmemb; return sizes; }