Realizar una solicitud GET (http.get)
Declaración
código_http, texto_json_cabeceras, cuerpo_respuesta = http.get(URL [, segundos_espera, cabeceras, URL_NO_ESCAPE ])
Declaración (parámetros con nombre)
Compatible desde 20250625; los parámetros de progreso son compatibles a partir de las versiones posteriores a 20260402
código_http, texto_json_cabeceras, cuerpo_respuesta = http.get{
url = URL;
timeout = segundos_espera;
headers = cabeceras;
params = parámetros_Query;
download_file = ruta_archivo_cuerpo_si_la_solicitud_tiene_éxito;
progress = función_de_retorno_de_progreso;
progress_interval_ms = intervalo_de_progreso_en_milisegundos;
}
Parámetros
- URL
Tipo texto; dirección URL que se debe solicitar. Este método aplica escape porcentual a la URL de forma predeterminada; si no se necesita, consulta la descripción del parámetro URL NO ESCAPE - Segundos de espera
Tipo real, parámetro opcional; tiempo de espera de la solicitud, en segundos; valor predeterminado 10 - Cabeceras
Tipo tabla, parámetro opcional; información de las cabeceras de la solicitud enviada, con la forma{field1 = value1, field2 = value2, ...}; valor predeterminado{} - Parámetros Query
Tipo tabla, parámetro opcional; parámetros Query de la solicitud enviada, con la forma{field1 = value1, field2 = value2, ...}; valor predeterminado{} - Ruta para guardar el cuerpo devuelto cuando la solicitud tiene éxito
Tipo texto, parámetro opcional; si se proporciona, el cuerpo devuelto tras una solicitud exitosa es la ruta donde se ha guardado - Función de retorno de progreso
Tipo función, parámetro opcional, compatible a partir de las versiones posteriores a 20260402. Se llama cuando cambia el progreso de la solicitud; el primer parámetro de la función es la información de progreso actual - Intervalo de la función de retorno de progreso en milisegundos
Tipo entero, parámetro opcional, compatible a partir de las versiones posteriores a 20260402. Controla el intervalo de activación de la función de retorno de progreso, en milisegundos - URL NO ESCAPE
Tipo booleano, parámetro opcional; true solicita directamente sin aplicar escape a la URL y false es el valor predeterminado
Para aplicar un escape personalizado a la URL, consulta el módulolcurl,easy:escapeyeasy:unescape
Valores devueltos
- Código de estado HTTP
Tipo entero; devuelve el código de estado HTTP de esta solicitud; devuelve -1 si se agota el tiempo de espera - Texto JSON de las cabeceras devueltas
Tipo texto o nil; información de las cabeceras en formato JSON devuelta al completar la solicitud; devuelve nil si se agota el tiempo de espera - Cuerpo devuelto
Tipo cadena o nil; contenido devuelto al completar la solicitud; si el cuerpo se guarda en un archivo, este valor es la ruta del archivo; devuelve nil si se agota el tiempo de espera
Descripción
Usa el método GET del protocolo HTTP/1.1 para solicitar recursos de red
Esta función no almacena recursos en el disco; para descargar recursos de red grandes, se recomienda usar http.download
Esta función puede ceder; antes de que devuelva el control, otros hilos pueden tener la oportunidad de ejecutarse
Si la versión del protocolo del servidor es HTTP/1.0 o HTTP/0.9, se puede usar el método httpGet como alternativa
cuerpo_respuesta = httpGet(URL, segundos_espera)
La función de retorno de progreso recibe una estructura info con la siguiente forma:
{
count_of_bytes_sent = bytes_enviados;
count_of_bytes_expected_to_send = bytes_que_se_espera_enviar;
count_of_bytes_received = bytes_recibidos;
count_of_bytes_expected_to_receive = bytes_que_se_espera_recibir;
}
Ejemplo
local code, res_headers, body = http.get("https://httpbin.org/get?hello=world&你好=世界", 15, {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"; -- Simula una solicitud de IE8
["Cookie"] = "a=1; b=2; c=3"; -- Envía también la cookie
})
if code == 200 then -- Si el código de estado devuelto es HTTP_OK
sys.alert(body)
end
Nota: el código anterior utiliza la función sys.alert, que no pertenece a este capítulo
Ejemplo (parámetros con nombre)
local code, res_headers, body = http.get{
url = "https://httpbin.org/get";
timeout = 15;
headers = {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"; -- Simula una solicitud de IE8
["Cookie"] = "a=1; b=2; c=3"; -- Envía también la cookie
};
params = {
["hello"] = "world";
["你好"] = "世界";
};
}
if code == 200 then -- Si el código de estado devuelto es HTTP_OK
sys.alert(body)
end
Nota: el código anterior utiliza la función sys.alert, que no pertenece a este capítulo
Ejemplo de envoltorio http.get para obtener la IP externa
function get_ip()
local done = false
thread.dispatch(function()
while (true) do
if (done) then
sys.toast("", -1)
return
else
sys.toast("正在获取 IP 地址...", device.front_orien())
end
sys.msleep(2000)
end
end)
while (true) do
local c, h, b = http.get("https://ip.chinaz.com/?ts="..tostring(sys.rnd()), 60)
if (c==200) then
sys.toast("", -1)
done = true
return b:match('您的本机IP地址:(%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?)')
end
end
end
--
-- Copia el código anterior al principio de tu propio script y úsalo en el script
sys.alert(get_ip())
Nota: el código anterior utiliza las funciones sys.alert, sys.toast, sys.msleep, sys.rnd, thread.dispatch y device.front_orien, que no pertenecen a este capítulo