【Cocos2d-x】HttpClient实现表情包下载与显示
转载请注明出处:https://blog.csdn.net/qq_28779503
Cocos2d-x封装了3个类来处理HTTP请求:
HttpRequest,HttpClient和HttpResponse.
使用HttpRequest,HttpClient和HttpResponse这3个类进行Http进行请求时,需要遵循一定流程
请求过程:
1.创建HttpRequest的实例。
2.设置请求方式,Get、Post等。(千万不要以为只有get和post方式哦,这是一般新手以为的,只是其他请求方式我们平时用到的很少)
3.设置请求地址和发送的数据(如果没有发送的数据,可不设置发送数据)。
4.设置响应回调函数,在回调函数中处理获取的数据。
5.创建HttpClient实例,发送请求。
6.释放请求连接。
使用Cocos2d封装的HttpRequest设置请求信息
HttpRequest:
是一种数据类型,它提供了一些方法用来定义或获取HTTP请求的参数,
常用方法包括下面几种:
设置请求连接
void setUrl(const char * url);
设置请求类型
void setRequestType(Type type);
这里的Type是Cocos2d-x定义的一个枚举类型,包括5种类型。
class CC_DLL HttpRequest : public Ref
{
public:/*** The HttpRequest type enum used in the HttpRequest::setRequestType.*/enum class Type{GET,POST,PUT,DELETE,UNKNOWN,};
...
}
设置回调函数:
void setResponseCallback(Ref* pTarget,SEL_HttpResponse pSelector);
设置请求的数据,参数buffer是提交的数据,len是请求数据的长度(使用发送数据的实际长度):
void setRequestData(const char* buffer,unsigned int len);
auto request = new HttpRequest();
//设置请求网址
request->setUrl("请填写你需要请求的网址");
//设置请求类型
request->setRequestType(HttpRequest::Type::GET);
//设置请求的数据
char data[50] = "data";
request->setRequestData(data,strlen(data));
HttpClient实现表情包下载与显示:
require("json")function MainScene:onCreate()local selfRoot = self:getResourceNode()--利用CocosStudio进行布局local TextBiaoQing = selfRoot:getChildByName("KW_TEXTFIELD_BIAO_QING") local BtnBiaoQing = selfRoot:getChildByName("KW_BTN_BIAO_QING") local image = ccui.ImageView:create()image:loadTexture("myTest.png",0)image:setPosition(300,450)selfRoot:addChild(image)local index = 1local function onClickBiaoQing()local BiaoQingDescStr = TextBiaoQing:getString() --获取输入框中文字(所要请求的表情包) --以"斗图网"为例:https://www.doutula.com/--请求地址:https://www.doutula.com/api/search?keyword=金馆长&mime=0&page=2--参数说明:keyword => 关键词, page => 分页(最大支持50页), mime => 图片类型(0: 所有, 1: 动图, 2: 静图, --mime方式过虑有漏网的,使用的可以自行过虑一下。)--请求方法:GET或POST--先通过网站提过的API接口获取相应数据(数据中可能包含表情包描述及图片RUL等)local xhr = cc.XMLHttpRequest:new()xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRINGlocal req = "https://www.doutula.com/api/search?keyword=" .. BiaoQingDescStr .. "&mime=0&page=1"xhr:open("GET",req)local fullFileNameUrl = ""local function onReadyStateChange() if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then --请求状态已完并且请求已成功local statusString = "Http Status Code:"..xhr.statusTextlocal response = xhr.response --获得返回的内容--获取到的是json字符串,但是该字符串不符合lua中封装的json文件的解析规则,会报错。--去掉"\\"字符串依旧正常,符合Lua语法规则,之后便可以正常解析local response = string.gsub(response,"\\","") local output = json.decode(response) --解析json数据index = index + 1fullFileNameUrl = output["data"]["list"][index]["image_url"] --取图片的URL地址--以下是通过图片的URL地址,请求该图片数据并保存到本地,然后进行贴图显示(图片也是数据构成的,可以用notpad++打开)local xhr = cc.XMLHttpRequest:new()--每次下载的图片都需要索引+1,然后image再去loadTexture该图片,如果图片名字不变,image所loadTexture的是缓存中的Texture,不会更新xhr._urlFileName = "myTest" .. index .. ".jpg" xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRINGxhr:open("GET", fullFileNameUrl)local function onDownloadImage()if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) thenlocal fileData = xhr.response--这里要把下载下来的文件放到预设的"res"文件夹下,否则loadTexture会找不到图片local fullFileName = cc.FileUtils:getInstance():getWritablePath() .."res" .. "\\" .. xhr._urlFileNamelocal file = io.open(fullFileName,"wb")file:write(fileData) --这里将图片数据写入该文件,数据写入完成之后便是一张图片了file:close()image:loadTexture(xhr._urlFileName,0) --图片贴图,显示表情包endendxhr:registerScriptHandler(onDownloadImage)xhr:send()endendxhr:registerScriptHandler(onReadyStateChange)xhr:send()endBtnBiaoQing:addClickEventListener(onClickBiaoQing)
end
效果如下图,输入表情包名称,点击“笑脸”按钮便可以获取并显示表情包。
【Cocos2d-x】HttpClient实现表情包下载与显示相关推荐
- python 表情包下载器,轻松下载上万个表情包、斗图不用愁
[阅读全文] 每次和朋友聊天苦于没有表情包,而别人的表情包似乎是取之不尽.用之不竭.作为一个程序员哪能甘愿认输,于是做了一个表情包下载器供大家斗图. 首先,还是介绍一下设计思路吧,和我们之前做的百度图 ...
- Python爬虫实战(5)斗图啦表情包下载(单线程)
Python爬虫实战(5)斗图啦表情包下载(单线程) 网页分析 代码 注意事项 文件名的中文标点 文件后缀os.path.splitext 网页反爬虫 输出结果 总结 利用BeautifulSoup ...
- Emoji-Chat emoji表情包发送及显示兼容web端、移动端
Emoji-Chat emoji表情包发送及显示兼容web端.移动端 序言 在如今聊天表情包满天飞的当下,聊天过程中想发送个表情感慨一下情绪在所难免,当下我就遇到这么个需求,希望在web端聊天室中可以 ...
- python土味情话_土味情话表情包下载
喵星人土味情话表情包是一款很甜的表情图片,现在的聊天模式三句话离不开表情包,而且小编带来的这款表情包非常的适合情侣日常撩,最新的土味情话,需要的朋友可以前来本站下载. 土味情话大全 一."对 ...
- war包怎么解压_渣渣辉表情包下载-渣渣辉抖音表情包动态图下载
详情介绍 渣渣辉表情包怎么制作?渣渣辉表情包gif在线生成工具应用安装资源推荐给大家,这是一款最近抖音上相当火爆的趣味聊天必备神器.这里各种各样的动态表情包应有尽有,你喜欢的表情包这里都有.感兴趣的小 ...
- python做动态表情包下载_用 Python 开发一个【GIF表情包制作神器】
之前小帅b写过这样一篇教程然后,好多人表示:虽然存了很多表情包但似乎还不是很过瘾因为它不可以自己来定制我们可不可以根据一些表情素材然后自己制作专属表情包呢像这样 本来小帅b想自己实现一个表情包制作器后 ...
- 微信表情包下载保存到本地,(新版微信可用)简单教程
问题:微信新版无法保存表情包(微信表情包加密),且微信网页版不能登录 方法一: 1.登录你的企业微信.添加外部微信联系人(自己的微信号) 2.微信(自己的微信号)向企业微信发送表情 3.企业微信点击表 ...
- python恶搞表情包下载大全_Python:恶搞,将你朋友照片做成熊猫人表情包
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:龙哥 ( 想要学习Python?Python学习交流群 ...
- python你已经是个成熟的软件了_你们已经是成熟的软件了表情包下载
你们已经是成熟的软件了表情包是一组非常搞笑的表情图片,转眼一个月过去了,还花呗的日子又来了,肯定很多小伙伴已经开始方了,下面小编就给大家带来了这些很火的表情包,感兴趣的朋友千万不要错过了. 使用方法 ...
最新文章
- 音频数据文件格式(PCM,WAV,MIDI)简记
- 易百教程人工智能python修正-人工智能无监督学习(聚类)
- 两个单链表相交的一系列问题
- lambda表达式的使用 || Lambda Express 口诀: 拷贝小括号,写死右箭头,落地大括号||default || @FunctionalInterface||静态方法实现
- MySQL性能突发事件问题排查技巧
- 进阶丨如何让你的数据分析更加简洁专业
- python之旅(六) - 自省
- python画图灰白_python 站点资料插值画图及白化
- c++随机打乱数组_编程之路之php数组操作详解【文末有惊喜】
- 【版本控制】Github for Windows客户端的使用
- 那些让人忍不住推荐的思维导图软件
- Java开发环境安裝教程
- 【计算机网络】数据链路层(超多图详析)
- pycharm免安装版推荐
- 计算机CPU高端产品,英特尔酷睿处理器哪个型号好?电脑CPU性能排名
- android 11如何剪裁上传图片
- 第1章 微处理器、微型计算机、微型计算机系统的区别
- 小学计算机上课课前导入视频教程,小学信息技术教学中微视频的导入实践分析...
- C++ 计算多边形的面积,计算IOU
- MarketsandMarkets:2018年全球太阳能背板市场需求将超17亿美元
热门文章
- Alamofire的设计之道
- java发红包功能_java封装发送微信红包API功能。
- 树莓派(五)Tinyxml Tinyxml2的使用
- android连接wifi后移动数据,手机连接WiFi的时候,数据网络开着会耗费流量吗
- 工业物联网解决方案:油井数据远程监控系统
- xml文件Unable to resolve table ‘xxx‘解决
- 大学python和vb哪个简单-VB强大还是python强大
- .Net 自定义应用程序配置【转】
- 大专学计算机课程好找工作吗,2021计算机大专毕业后好找工作吗
- Flutter启动页白屏处理