cocos2d-x系列札记(7)-在cocos2d-x项目中使用curl与web服务器通信

cocos2d-x系列笔记(7)---在cocos2d-x项目中使用curl与web服务器通信

今天研究了一下如何利用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;
}

参照这段例子代码就可以对web服务器进行post访问