本帖最后由 汽汽汽汽水 于 2023-12-4 09:39 编辑
适用版本 v 0.27.0.0
在我们开发中,除了与游戏服务端通讯来同步游戏物体,有时还需要与其它服务端通讯来获取或记录一些特殊的数据, 常见的比如玩家的行为数据、通过关卡的速度、点击某个UI界面的次数等,用这些数据来分析游戏的进度。在口袋方舟中,我们提供调用 HTTP 接口的方法,让开发者实现与其它服务端通讯。
我们使用这个接口:fetch(); 来实现 HTTP 请求。
接下来我会编写一个示例,从 Github 公开的接口获取某个用户的基础信息,先看下实际效果
GitHub API 接口请求地址: api.github.com/users/onionkingdom
我们可以先在浏览器中访问一下这个地址,查看下返回结果:
可以看到访问之后的返回了一个标准的 Json 结构,所以我们可以在代码中使用 JSON 方法来解析它,并把用户的地址输出出来。
关键代码:
export default class HttpDemo extends UIScript {
protected onStart() {
this.layer = UILayerMiddle;
// 发起请求的按钮
const requestBtn = this.uiWidgetBase.findChildByPath("RootCanvas/requestBtn") as Button;
// 请求地址 文本框
const requestText = this.uiWidgetBase.findChildByPath("RootCanvas/requestText") as InputBox;
// 响应内容 文本框
const responseText = this.uiWidgetBase.findChildByPath("RootCanvas/responseText") as InputBox;
// Json 解析内容 文本框
const jsonText = this.uiWidgetBase.findChildByPath("RootCanvas/jsonText") as TextBlock;
// 请求按钮被点击
requestBtn.onClicked.add(() => {
// 通过 输入框 拿到请求地址
const requestUrl = requestText.text;
// 发起 http 请求
fetch(requestUrl).then(async (res) => {
// 通过 HTTP 状态码 判断请求状态 200 为成功
if (res.status == 200) {
// 请求成功获取内容
const resText = await res.text();
if (resText != null) {
responseText.text = resText;
// 尝试格式化
try {
const jsonObj = JSON.parse(resText);
// 格式化成功 获取 location 属性
jsonText.text = '位置' + jsonObj['location'];
} catch (error) {
console.log("解析出错,源数据可能不是正确的 Json 格式!")
jsonText.text = "无法使用Json解析";
}
}
} else {
console.warn("请求失败!");
}
});
});
}
}
完整项目:
HttpDemo.zip
(118.03 KB, 下载次数: 75)
|