(转载)使用curl 和 libjson 完成联网和数据解析
转载地址:http://my.oschina.net/cocosgame/blog/71181
libjson 编译和使用 - 3. libjson的C接口 API
http://blog.csdn.net/laogong5i0/article/details/8225936
项目就要做到联网了, 选择了用curl库来完成联网部分,网上看了下curl使用,要是简单的联下网,测测数据什么的,还是挺简单的,但要用到游戏里面,那就有必要进一步的封装了。
由于C++这块还不是很熟悉,要完成这个工作估计要点时间。
------------------------------------------------------------------------------
因为之前的项目还有点工作要做,所以耽误了点时间。
新项目要解决联网和数据解析的问题了,目前决定用curl来解决联网,传送的数据用json,客户端用libjson来完成数据解析。
首先来解决联网的问题,cocos2dx自带了curl库,使用起来很方便。在win32上直接把头文件curl.h引进来就可以了(注意路径),在android下用还要在android.mk文件把curl库添加进来,具体可以参考tests例子。
接下来怎么用curl来连接后台?
具体可以看看这个链接:http://blog.csdn.net/jgood/article/details/4787670,(中文的)
还有就是 curl自带文档:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html (英文的)
由于我也是刚刚开始用curl,很多用法都不是很熟悉,只是简单的使用了get和post两种方法和后台交互。
折腾了几个钟,终于顺利的从后台拿到了数据,只是从win32移植到android的时候,遇到的问题,第一个就是添加curl 库时,刚才是不知道怎么添加,后来才想起tests里面有用到curl,于是就把方法照搬过来. 但是还是拿不到数据,还要把android联网的权限打开。到此android上也能顺利拿到数据了。
联网解决了,下面就是数据解析了。
先是在网上查找和cocos2dx c++ json有关的资料,可以看看这个链接:http://blog.csdn.net/onerain88/article/details/7595563,然后实际操作了,先把libjson库解压,把源文件libjson.h.JSONOptions.h 和文件夹Source拷贝到cocos2dx的工程的Class目录下,在JSONOptions.h有些宏需要注意。一个就是: #define JSON_LIBRARY 这个规定libjson用的是c语言,把它注释了就变成用C++了,具体就看个人喜欢了。还有其他一些宏声明是debug版的还是nodebug的,具体还是看看源文件吧。按照libjson教程成功把json字符串解析了出来,其中解析json数组时废了点时间,要用到遍历每个数组元素,然后存到一个c++的数组里面。到此win32下联网和数据解析都可以了。当把libjson移植到android时,也遇到的点问题。首先是编译问题,用NDK编译libjson时,需要把C++的异常捕获打开,在android.mk文件加上LOCAL_CPPFLAGS += -fexceptions这句,就这个问题纠结了一段时间。
好,现在win32和android下都能联网和解析数据了。
come from :http://blog.csdn.net/zwx12031017/article/details/8541405