使用curl 和 libjson 完成联网和数据解析

    项目就要做到联网了, 选择了用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下都能联网和解析数据了。

    ps: 写这个主要是记录一下。

你可能感兴趣的:(使用curl 和 libjson 完成联网和数据解析)