API para iniciar scripts remotamente
-
Descrição da API
POST /spawn HTTP/1.1
spawn_args: {"parâmetros de inicialização do script":...}
[conteúdo do script] -
Possíveis retornos
{"code":1,"message":"操作失败"}{"code":2,"message":"脚本有语法错误","detail":"具体的错误信息"}{"code":3,"message":"已经有脚本正在运行中"}{"code":233,"message":"未知错误"} -
Descrição
- [parâmetros de inicialização do script] é uma string imprimível sem quebras de linha;
- [conteúdo do script] é o conteúdo do script, que pode ser texto ou dados binários criptografados;
- o script pode obter os parâmetros de inicialização por meio de
proc_getouproc_take; - o script não será salvo como arquivo no dispositivo; ele apenas será executado;
- como exceção ao item anterior, quando o modo de daemon de scripts está ativado, o dispositivo armazena em cache os dados de script relacionados.
-
Exemplo
Por exemplo, construa e envie a seguinte solicitação ao dispositivo
POST /spawn HTTP/1.1
spawn_args: {"server_ip":"192.168.31.13","port":55555}
Content-Length: 123
local args = proc_get("spawn_args")
args = json.decode(args)
sys.alert("帐号服务器的 IP 为:"..args.server_ip.."\n 端口为:"..args.port)o dispositivo exibirá uma caixa de aviso →
O IP do servidor de contas é: 192.168.31.13
A porta é: 55555- Implementação do exemplo em Python (para Python 3.x):
# -*- coding: utf-8 -*-
import http.client
import json
spawn_args = {
"server_ip": "192.168.31.13", # endereço IP do computador
"port": 55555, # porta do computador
}
data = r'''
local args = proc_get("spawn_args")
args = json.decode(args)
sys.alert("帐号服务器的 IP 为:"..args.server_ip.."\n 端口为:"..args.port)
'''
headers = {
"Content-type": "text/lua",
"spawn_args": json.dumps(spawn_args),
}
conn = http.client.HTTPConnection("192.168.31.72:46952") # endereço e porta do dispositivo
conn.request("POST", "/spawn", data.encode('utf-8'), headers) # codifica data como UTF-8
response = conn.getresponse()
print(response.status, response.reason) # usa a função print()
data = response.read()
print(data.decode('utf-8')) # decodifica os dados da resposta e usa a função print()
conn.close()