Back to Maaassistantarknights

Maa-HTTP 接口实现

src/Java/Readme.md

6.9.216.5 KB
Original Source

Maa-HTTP 接口实现

基于 JNA (Java-Native-Access) 调用 Maa 核心的 HTTP + WebSocket 接口实现. 仅在 Windows 下进行过测试,未在 Linux 下测试过(相信强大的 Linux 用户自己可以解决问题!

接口实现情况

功能名称接口路径(命令)HTTP实现WebSocket实现
获取版本号getVersionYesYes
创建连接connectYesYes
添加任务appendTaskYesYes
设定任务参数setTaskParamsYesYes
开始执行startYesYes
停止执行stopYesYes
销毁实例destroyYesYes
列出实例连接listInstanceYesYes
消息回调通知callBackNoYes
获取截图getImageYesNo

环境依赖

  1. JDK1.8 +
  2. Maa v3.9.0-alpha +

如何编译

.\gradlew.bat jar

使用方法

  1. 把他丢进 Maa 文件夹下,形成如下文件结构.备注: 启动脚本Maa-HTTP-Server-startup.bat.

    text
    MaaCoreArknights_v3.9.0-beta.8
    │   MAA.exe
    │   MaaCore.dll
    │   ...
    └───Java-HTTP
        │   Maa-HTTP-0.0.1.jar
        │   Maa-HTTP-Server-startup.bat
    
  2. 双击Maa-HTTP-Server-startup.bat启动.

  3. 默认端口号8848钛金端口,如需修改,请修改 Maa-HTTP-Server-startup.bat 中的-port=8848 .

  4. 当你看到如下内容则启动成功.

log
2022-05-31 22:20:03.000 [main] INFO  Application - Autoreload is disabled because the development mode is off.
2022-05-31 22:20:03.407 [main] INFO  Application - Application started in 0.458 seconds.
2022-05-31 22:20:03.407 [main] INFO  Application - Application started: io.ktor.server.application.Application@fac80
2022-05-31 22:20:03.717 [DefaultDispatcher-worker-1] INFO  Application - Responding at http://0.0.0.0:8848

接口文档

HTTP 部分

提供了如下功能

功能名称接口路径
获取版本号getVersion
创建连接connect
添加任务appendTask
设定任务参数setTaskParams
开始执行start
停止执行stop
销毁实例destroy
列出连接listInstance
获取截图getImage

接口名称 获取版本号

1) 请求地址

http://127.0.0.1:8848/API/V1/getVersion

2) 调用方式: HTTP get
3) 请求参数: 无
4) 返回结果示例
json
{
  "data": {
    "version": "v3.9.0-beta"
  },
  "code": 0,
  "message": "success"
}

接口名称 创建连接
1) 请求地址

http://127.0.0.1:8848/API/V1/connect

2) 调用方式: HTTP post
3) 请求参数
json
{
  "adbPath": "C:\\MaaCoreArknights3\\platform-tools\\adb.exe",
  "host": "127.0.0.1:62001",
  "detailJson": ""
}
Post 参数
字段名称字段说明类型必填备注
adbPathADB地址StringY-
host实例地址StringY-
detailJson有什么用我也不知道,反正就是有StringN-
4) 请求返回结果
json
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id给连接实例创建的IDString-
result是否成功Boolean-


接口名称 添加任务
1) 请求地址

http://127.0.0.1:8848/API/V1/appendTask

2) 调用方式: HTTP post
3) 请求参数
json
{
  "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
  "type": "Fight",
  "params": {
    "stage": "LastBattle"
  }
}
Post 参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
type任务类型,此次示例为理智作战战斗,详情参考集成文档StringY-
params任务参数JsonY-
4) 请求返回结果
json
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "taskId": 0
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id实例IDString-
taskId任务ID,为0则失败Int-

接口名称 设定任务参数
1) 请求地址

http://127.0.0.1:8848/API/V1/setTaskParams

2) 调用方式: HTTP post
3) 请求参数
json
{
  "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
  "type": "Fight",
  "taskId": 0,
  "params": {
    "stage": "LastBattle"
  }
}
Post 参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
taskId任务IDIntY-
type任务类型,此次示例为理智作战战斗,详情参考集成文档StringY-
params任务参数JsonY-
4) 请求返回结果
json
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": false
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id给连接实例创建的IDString-
result是否成功Boolean-

接口名称 开始执行
1) 请求地址

http://127.0.0.1:8848/API/V1/start

2) 调用方式: HTTP post
3) 请求参数
json
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
4) 请求返回结果
json
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id给连接实例创建的IDString-
result是否成功Boolean-

接口名称 停止执行,清空任务链
1) 请求地址

http://127.0.0.1:8848/API/V1/stop

2) 调用方式: HTTP post
3) 请求参数
json
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
4) 请求返回结果
json
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id给连接实例创建的IDString-
result是否成功Boolean-

接口名称 销毁实例
1) 请求地址

http://127.0.0.1:8848/API/V1/destroy

2) 调用方式: HTTP post
3) 请求参数
json
{
  "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3"
}
Post 参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
4) 请求返回结果
json
{
  "data": {
    "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
    "result": true
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id给连接实例创建的IDString-
result是否成功Boolean-

接口名称 列出实例连接
1) 请求地址

http://127.0.0.1:8848/API/V1/listInstance

2) 调用方式: HTTP get
3) 请求参数: 无
4) 请求返回结果
json
{
  "data": {
    "list": [
      {
        "id": "ccd76e0c367511158ca774ff951a22e8bb62f5d3",
        "host": "127.0.0.1:62026",
        "adbPath": "C:\\Users\\atmzx\\Desktop\\MaaCoreArknights3\\platform-tools\\adb.exe",
        "uuid": "",
        "status": 0
      }
    ]
  },
  "code": 0,
  "message": "success"
}
5) 请求返回结果参数说明
字段名称字段说明类型备注
id实例IDString-
host连接的HostString-
adbPath使用的Adb地址String-
uuid设备备ID,保留String-
status0待机中,1任务执行中Int-

接口名称 获取截图
1) 请求地址

http://127.0.0.1:8848/API/V1/getImage

2) 调用方式: HTTP get
3) 请求参数
Get参数
字段名称字段说明类型必填备注
id创建连接返回的实例IDStringY-
4) 请求返回结果: 图片内容, PNG 格式

WebSocket 部分

请求地址(没错跟HTTP同样是8848钛金端口

ws://127.0.0.1:8848/API/V1

提供了如下功能

功能名称命令
获取版本号getVersion
创建连接connect
添加任务appendTask
设定任务参数setTaskParams
开始执行start
停止执行stop
销毁实例destroy
列出实例连接listInstance
消息回调通知callBack

所有的的WebSocket接口跟HTTP接口请求响应参数均完全一致


接口名称 获取版本号
json
{
  "command": "getVersion",
  "msgId": 114514,
  "data": {}
}
字段名称字段说明类型必填备注
command操作命令String,Y-
msgId消息ID,服务端收到此次请求,会用同一个ID答复,便于请求响应关联IntY-
data请求参数,请参考同名接口的HTTP接口文档,与HTTP接口完全一致JsonY-
请求返回结果
json
{
  "data": {
    "version": "v3.9.0-beta"
  },
  "command": "getVersion",
  "msgId": 114514,
  "code": 0,
  "message": "success"
}
字段名称字段说明类型备注
command操作命令,与请求一致String-
msgId消息ID,此次请求的消息ID为114514则响应也是114514Int-
data响应内容,请参考同名接口的HTTP接口文档,与HTTP接口完全一致Json-

接口名称 创建连接
json
{
  "command": "connect",
  "msgId": 114514,
  "data": {
    "adbPath": "C:\\Users\\atmzx\\Desktop\\MaaCoreArknights3\\platform-tools\\adb.exe",
    "host": "127.0.0.1:62001"
  }
}
字段名称字段说明类型必填备注
command操作命令String,Y-
msgId消息ID,服务端收到此次请求,会用同一个ID答复,便于请求响应关联IntY-
data请求参数,请参考同名接口的HTTP文档,与HTTP接口完全一致JsonY-
请求返回结果
json
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "result": true
  },
  "command": "connect",
  "msgId": 114514,
  "code": 0,
  "message": "success"
}
字段名称字段说明类型备注
command操作命令,与请求一致String-
msgId消息ID,此次请求的消息ID为114514则响应也是114514Int-
data响应内容,请参考同名接口的HTTP接口文档,与HTTP接口完全一致Json-

appendTask setTaskParams start stop等接口不再描述,均可遵循以上规则,参考HTTP接口文档实现。


接口名称 回调消息
返回结果示例
json
{
  "data": {
    "id": "46b9d5cd60382f100b336b17d6817f8eda255f73",
    "logId": 1,
    "msg": 2,
    "details": {
      "uuid": "",
      "details": {
        "adb": "C:\\MaaCoreArknights3\\platform-tools\\adb.exe",
        "address": "127.0.0.1:62001",
        "config": "General",
        "width": 1280,
        "height": 720
      },
      "what": "ResolutionGot",
      "why": ""
    }
  },
  "command": "callBack",
  "msgId": 0,
  "code": 0,
  "message": "success"
}
字段名称字段说明类型备注
command操作命令,callBack类型String-
msgId消息ID,callBack 一律为0Int-
data响应内容,详情参考集成文档Json-