【COCOS2DX-LUA 脚本开发之八】使用QUICK-COCOS2D-X或COCOS2DX-LUAPROXY的LUA框架实现LUA-HTTP网络交互!

简介:
本站文章均为  李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接:  http://www.himigame.com/lua-game/1314.html

     利用 cocos2dx-LuaProxy 也可以来实现lua版http功能,具体请移步到:【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包

 

Cocos2dx 为我们封装了在cocos2dx中http的网络框架,其文件在cocos2dx引擎包的/Users/Himi/Documents/cocos2d-2.1rc0-x-2.1.2-hotfix/extensions/network 文件下的 HttpClient、HttpRequest 、HttpResponse如下图:

 

QQ20130412-1@2x

 

至于如何使用,Himi这里不再详细叙述,大家可以看引擎提供的例子中自己阅读学习(TestCpp项目中)

有童鞋就会问了,既然cocos2dx都已经为我们封装好了,那还讲什么? – -。

嗯,是的,我们可以通过将这几个类通过tolua++工具binding到lua中供我们来使用,但是!一般我们访问服务器时,都希望数据返回时调用我们的一个方法进行对数据的处理,那么使用CCHttpClient 我们可以通过HttpRequest请求包的时候,对其进行设置其回调函数,如下:

大家可以看到此函数需要一个SEL_CallFuncND的参数,而SEL_CallFuncND是个宏定义,并且cocos2dx binding到Lua的LuaCocos2d.cpp 中是没有将SEL_CallFuncND进行binding的。

当然大家如果可以将lua调用setResponseCallback的办法解决,那么则可以直接使用cocos2dx引擎包下的network即可。

另外我们可以通过一些别的办法进行解决,当然以下内容也是我们本篇所要重点介绍的! 

首先还是继续介绍下quick-cocos2d-x框架,对于quick-cocos2d-x 其实在之前简单的介绍了,它是一个基于cocos2d-x lua进行扩展的一个框架,使用quick-cocos2d-x 能让使用cocos2dx-lua项目开发者,更快捷的,更方便的开发!

需要注意的是quick-cocos2d-x的git可下载的zip是不全的,童鞋们需要通过git 来clone下来。500+MB

 (Himi与quick-cocos2d-x作者交流中,在下个版本有可能quick-cocos2d-x会嵌入cocos2dx引擎中)

虚的不多说,本篇则是Himi从quick-cocos2d-x 中提取出来的一个Http框架供Lua使用,下面简单介绍下:

   (以下对于一些qucik-cocos2d-x中的http的框架封装和如何修改的不做解释,直接介绍如何使用!)

首先下载改版后的c++代码以及Himi对应封装好的pkg文件包 LuaHTTP.zip :

LuaHTTP  下载地址:http://vdisk.weibo.com/s/xg9U0  解压后将HNetWork文件夹并将其加入你们的项目, 解压后如下图:

QQ20130412-4@2x

然后将CCHTTPRequest.pkg 通过cocos2dx 引擎的tolua++ 工具binding到你项目的LuaCocos2d.cpp中(别忘记将这个pkg添加到Cocos2d.pkg中),并且在LuaCocos2d.h中添加:

然后,让Xcode,Build 下!OK 编译成功!

然后我们在lua中书写测试代码:

可能大家直接看上面不太清晰,OK,先看对应调用的CCHTTPRequest.h中的createWithUrlLua函数:

 

函数第一个参数: lua函数 (用于接受到server数据后的回调用户处理数据)

函数第二个参数: 获取数据的url地址

函数第三个参数: http交互方式  GET or POST ,如下定义:

#define kCCHTTPRequestMethodGET  0

#define kCCHTTPRequestMethodPOST 1

看完以上的理解,那么反回头看lua的那几行测试代码,我想你也该很清楚了!

运行截图:

QQ20130412-5@2x

 

控制台输出的打印:

QQ20130412-6@2x

 

ok, 本篇就到这里!有任何问题,请及时留言讨论。


相关文章
|
2月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
209 3
|
1月前
|
机器学习/深度学习 算法 PyTorch
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
本文探讨了图神经网络(GNN)与大型语言模型(LLM)结合在知识图谱问答中的应用。研究首先基于G-Retriever构建了探索性模型,然后深入分析了GNN-RAG架构,通过敏感性研究和架构改进,显著提升了模型的推理能力和答案质量。实验结果表明,改进后的模型在多个评估指标上取得了显著提升,特别是在精确率和召回率方面。最后,文章提出了反思机制和教师网络的概念,进一步增强了模型的推理能力。
66 4
基于图神经网络的大语言模型检索增强生成框架研究:面向知识图谱推理的优化与扩展
|
30天前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
2月前
|
人工智能 自然语言处理
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
WebDreamer是一个基于大型语言模型(LLMs)的网络智能体框架,通过模拟网页交互来增强网络规划能力。它利用GPT-4o作为世界模型,预测用户行为及其结果,优化决策过程,提高性能和安全性。WebDreamer的核心在于“做梦”概念,即在实际采取行动前,用LLM预测每个可能步骤的结果,并选择最有可能实现目标的行动。
74 1
WebDreamer:基于大语言模型模拟网页交互增强网络规划能力的框架
|
2月前
|
JSON 数据处理 Swift
Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用
本文深入探讨了 Swift 中的网络编程,主要介绍了 URLSession 和 Alamofire 两大框架的特点、用法及实际应用。URLSession 由苹果提供,支持底层网络控制;Alamofire 则是在 URLSession 基础上增加了更简洁的接口和功能扩展。文章通过具体案例对比了两者的使用方法,帮助开发者根据需求选择合适的网络编程工具。
44 3
|
2月前
|
存储 安全 网络安全
网络安全法律框架:全球视角下的合规性分析
网络安全法律框架:全球视角下的合规性分析
65 1
|
2月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
2月前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
68 17
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。