| 本帖最后由 汽汽汽汽水 于 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, 下载次数: 518) |