转载地址: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

(转载)使用curl 和 libjson 完成联网和数据解析的更多相关文章

  1. 使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间

    http://zhangrenfang8738.blog.163.com/blog/static/95401881201142711450245/ curl监控站点响应时间 2011-05-27 11 ...

  2. iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态

    一.AFNETWorking简单使用 get请求 get请求,以后经常用NSURLSession底层的写的部分 简单的post请求 用post请求下载文件,方法很多,还可以通过upload任务来执行 ...

  3. php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。

    这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...

  4. 联网请求数据:Android篇

    这篇文章主要回顾之前的MYangtzeu App教程的联网请求方法和json解析套路,主要目的是实现左侧菜单数据的联网获取. 1.先上请求地址实体类Constants.java package com ...

  5. for循环中进行联网请求数据、for循环中进行异步数据操作,数据排序错乱问题解决;

    for循环中进行联网请求数据,由于网络请求是异步的,第一个网络请求还没有回调,第二次第三次以及后续的网络请求又已经发出去了,有可能后续的网络请求会先回调:这时我们接收到的数据的排序就会错乱:怎么才能让 ...

  6. 转载:CURL常用命令

    转载网址:http://www.cnblogs.com/gbyukg/p/3326825.html 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.cent ...

  7. [转载] Linux curl命令详解

    转载自http://www.linuxdiyf.com/linux/2800.html 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的htt ...

  8. 转载:curl 模拟请求

    一般情况下我们会在网页上请求后台接口,但是对于需要进行多次测试的人来说,每一次都要在网页上模拟请求,是存在很大局限性的.因此,我们需要学会模拟请求,以达到跟实际请求一样的效果. 1. curl的用法 ...

  9. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

随机推荐

  1. 解题:APIO 2015 雅加达的摩天大楼

    题面 分块思想+最短路 发现对于步长小的doge会连出很多边,很容易导致大量的重边,于是对doge们根据步长分块讨论:根据步长建出分层图,然后把步长不超过某个值的doge们连到对应层上的点上,其余的d ...

  2. mysql四-1:单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

  3. jetBrains 插件开发第一课-- 在主菜单栏新增一个菜单

    环境搭建完了,接下来可以开始写代码了: 1.新建 plugin 项目 2.编辑 plugin.xml,修改一下里面的插件名那些信息,该文件的配置项可以看这里:plugin.xml 其中比较关键的有一个 ...

  4. python学习(九) 网络编程学习--简易网站服务器

    python `网络编程`和其他语言都是一样的,服务器这块步骤为:`1. 创建套接字``2. 绑定地址``3. 监听该描述符的所有请求``4. 有新的请求到了调用accept处理请求` Python ...

  5. 111.保留的编号(ing)

    用于做整理的编号,000,111,222,……999

  6. myeclipse注册码,可以用到2016年

    myeclipse注册码,可以用到2016年 xiangyang kLR8ZF-655954-61677756068297221

  7. MyBatis操作oracle的一些问题加载

    mybatis在更新数据或者插入数据为空的时候必须指定jdbcType类型 1:传入的参数是对象类型 User user =new User(); INSERT INTO t_user ( id, u ...

  8. Ibatis的resultMap和查询数据的对应关系

    iBatis和MyBatis 中返回数据对应关系 直接进入主题,现在的项目改用MyBatis了,感觉跟iBatis还是不一样的,比如在判断空值上面,iBatis是有标签的<isNotEmpty& ...

  9. uva 11971 Polygon

    https://vjudge.net/problem/UVA-11971 有一根长度为n的木条,随机选k个位置把它们切成k+1段小木条.求这些小木条能组成一个多边形的概率. 将木条看做一个圆,线上切k ...

  10. 【acmm】一道简单的数学题

    emm卡常 我本来写成了这个样子: #include<bits/stdc++.h> using namespace std; typedef long long LL; ; struct ...