帖子

Memorial Edition

查看: 53|回复: 1

[其他开发教程] 易语言取服务器数据

[复制链接]

Lv.2 采石匠

人气
5 点
金粒
36 粒
宝石
0 颗
爱心
0 颗
钻石
1 颗
贡献
0 点
发表于 昨天 21:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家好,很高兴和各位见面,我是扶风观云!在网上找不到相关与MC服务器信息获取的易语言代码,大多都是使用模块来进行操作。因为我也是个易语言新手,所以这里就给大家打来一个使用易语言获取MC服务器数据的一个方式

-
首先肯定是安利我自己搓的模块

点我下载模块


-
那么既然是新手教程那这里给大家带来两种获取服务器数据的方式
-
1.使用我的模块

聚龙世界_功能_MC服务器信息获取_图片
聚龙世界_功能_MC服务器信息获取_文字

使用这两个子程序来获取,一个是返回一张包含图标和基础信息的图片,一个是拥有详细信息包括支持版本和服务器motd的返回信息(等于吧图片拆成文字方便调用)
-
2.使用API
在网上我找到的可以使用的api
Minecraft 服务器状态查询网 | Motd 查询站
我模块用的就是这个
-
api调用教学,因为是新手教学咱们就不用json了,用一个简单易懂的文本型来解决
我们使用上面的网站来教学,这里分别是 MC服务器数据图片 和  详细数据
-
MC服务器数据图片
-
首先我们需要取回数据需要用到  网页_访问 (, )  操作,我们只用前两个参数即可
第一个是你的url地址包含你的api地址和你需要给对方提供的参数数据
第二个是我们的访问操作,常见有 0=GET 1=POST 2=HEAD 3=PUT 4=OPTIONS 5=DELETE 6=TRACE 7=CONNECT
在这里我们的api访问用的是 GET 方式,所以我们的代码就是
'网页_访问 (请求数据,0 )
那么请求数据就是我们的json,因为新手教程咱就直接吧整合的api请求放在这里

局部(全局)变量   请求数据    文本型
'请求数据 = “https://motd.minebbs.com/api/status_img?ip=” + 服务器IP + “&port=” + 服务器端口 + “&stype=auto&theme=” + 返回的图片风格

那么我们一个个看
在 对方api中 服务器IP如果完整,允许端口为空,那我们我们在调用时只使用欲查询的服务器IP即可,端口可以空着,返回的图片风格就是对方api支持给我们的返回图片风格,这个大家可以去api网址看
那么我们整合请求后我们需要访问对方的api
'网页_访问 (请求数据, 0)
那么我们就可以取到结果啦!
当然,因为这是取回一张图片,所以可以直接使用
图片1.图片=网页_访问 (请求数据, 0)
那么当我们发送请求后图片1.图片就会是取回的服务器信息图片了
-
详细数据
-
那么来到详细数据,我们就需要解析对边返回的json数据
首先我们也需要有一个对方的对外的api访问链接
我们先创建一个变量来储存吧 还是一个文本型的 叫url吧
url = “https://motd.minebbs.com/api/status?”  ' api储存
因为文本型支持更多的参数,在这个帖子内我就全部讲出来
我们再创建一个变量  端口 也是文本型 来判断是否你是否有输入端口或者只输入了ip


.判断开始 (端口 = “”)
    请求数据 = url + “ip=” + ip + “&stype=” + 服务器类型  ' 整合请求
.默认
    请求数据 = url + “ip=” + ip + “&port=” + 端口 + “&stype=” + 服务器类型  ' 整合请求


这个服务器类型就是我们查询的类型了,在api网站中我们有  自动(“auto”) java(“je”) 基岩版 “be”,那么这个服务器类型自然就是这三个,建议使用auto,这样可以交给api判断
,,,
然后就是发送你的请求,我们来新建一个变量来储存返回的信息  就叫  返回信息  吧 文本型的
返回信息 = 编码_utf8到gb2312 (到文本 (网页_访问 (请求数据, 0)))  ' 取回json
首先,对方的json返回是UTF-8的,易语言无法直接取回使用,那么我们就需要转码,将它转成可以识别的GB2312
然后,我们取回信息后需要判断这条信息是否成功获取到了我们想要的东西,那么我们要加一个判断


.判断开始 (返回信息 = “{” + #引号 + “status” + #引号 + “:” + #引号 + “error” + #引号 + “}”)


这条指令的意思是如果api返回的数据是 error  那么说明你的请求有问题,如果请求有问题,那么这条程序肯定是返回空的,所以当这个判断成立的时候就需要加一个提示
信息框(“请求失败!请检查您的服务器地址是否正确”)
好了,这是请求失败的,如果是请求成功返回的json我们就需要解析它,首先我们创建一堆变量来分割我们需要的数据,当然还是文本型


    返回_服务器状态 = 文本_取出中间文本 (返回信息, #引号 + “status” + #引号 + “:” + #引号, #引号 + “,”)  ' 解析json
    返回_服务器类型 = 文本_取出中间文本 (返回信息, #引号 + “type” + #引号 + “:” + #引号, #引号 + “,”)
    返回_服务器响应地址 = 文本_取出中间文本 (返回信息, #引号 + “host” + #引号 + “:” + #引号, #引号 + “,”)
    返回_服务器支持版本 = 文本_取出中间文本 (返回信息, #引号 + “version” + #引号 + “:” + #引号, #引号 + “,”)
    返回_访问协议 = 文本_取出中间文本 (返回信息, #引号 + “protocol” + #引号 + “:”, “,” + #引号)
    返回_展示信息 = 文本_取出中间文本 (返回信息, #引号 + “motd” + #引号 + “:” + #引号, #引号 + “,”)
    返回_在线玩家数 = 文本_取出中间文本 (返回信息, #引号 + “online” + #引号 + “:”, “,” + #引号)
    返回_最大玩家数 = 文本_取出中间文本 (返回信息, #引号 + “max” + #引号 + “:”, “,” + #引号)
    返回_延迟 = 文本_取出中间文本 (返回信息, #引号 + “delay” + #引号 + “:”, “,” + #引号)
    返回_图标 = 文本_取出中间文本 (返回信息, #引号 + “icon” + #引号 + “:” + #引号, #引号 + “,”)


易语言的好处就是简单易懂,我相信看到这里的你不需要理解也可以知道我们取出来的中间文本是什么了
那么这就是纯数据取回的方式了。
在这里着重讲一下图标,这里取回的图片数据是 base64 的文本格式,我们需要使用
编码_Base64转图片 (返回_图标)
来将返回的base64数据变成易语言可以识别的图片!
-
好了那这里就是新手了解关于服务器数据获取的源码详细讲解了,如果有不懂的欢迎各位留言联系
这里是扶风,我们下次有缘再见!





Lv.2 采石匠

人气
5 点
金粒
36 粒
宝石
0 颗
爱心
0 颗
钻石
1 颗
贡献
0 点
 楼主| 发表于 昨天 21:09 | 显示全部楼层
程序引用了部分 精易模块 的代码,请在编辑/引用代码时遵守相关协议
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

让留下的人,笑着活下去

Archiver|小黑屋| MCBBS纪念版 ( 新ICP备2024014954号|兵公网安备66010002000149号 )|隐私政策| 手机版

GMT+8, 2025-11-29 21:35 , Processed in 0.113250 second(s), 20 queries , Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2025 MCBBS纪念版 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载

返回顶部