这是一篇关于LOL官方api的调用起步教程,语言为C#为主,以及python的部分代码示例,此篇会说明调用成功的必要点,以及难点部分。
一、概述
手动启动客户端,wegame启动也可。启动后,api的调用环境就达到要求了。
关键因素
大部分的API的的请求头(head)内容是一样的,解决head所需参数和 url的端口 是关键点。
1)head结构如下:
{
"Accept":"application/json"
"Content-Type":"application/json"
"Authorization":"Basic xxxxxxxxxxx"
}
2)关于url
整体结构:固定前缀+“:”+端口+“/”+具体请求api。例如:https://127.0.0.1:54379/data-store/v1/install-dir
- 固定前缀:https://127.0.0.1
- 端口:xxx
- 具体请求api:不同的api此处不同,例如:data-store/v1/install-dir是用来获取客户端运行程序的安装地址的
3)总结:
- 关键需要的数据是token和port端口
- 客户端每次启动都会刷新这两个值
难点
1)https请求
需要对认证进行处理
2)获取端口和token时,需要获取管理员权限
二、开始请求
端口与token的获取
手动获取
必须以管理员权限打开CMD命令窗,输入以下内容获取基本数据
wmic PROCESS WHERE name='LeagueClientUx.exe' GET commandline
获取内容如下:
提取关键点:
//端口
--app-port=xxxx
//token
--remoting-auth-token=xxxxx
代码获取
此时就涉及到如何获取管理员权限了,无需密码的方式,使某些代码在管理员权限下进行运行。此处表现出来的就是CMD命令的管理员权限需求。
//此处贴核心代码块,有些自己习惯写法不写在此处
public const string API_FILENAME = "api_file.txt";
public const string COMMAND = "wmic PROCESS WHERE name='LeagueClientUx.exe' GET commandline";
....
public bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
...
if (IsAdministrator())
{
var result = CMD(COMMAND);
Console.WriteLine