Aprender
Clase de motor
HttpService
No creable
Servicio

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.


Resumen
Propiedades
Métodos
GenerateGUID(wrapInCurlyBraces: boolean):string
GetAsync(url: Variant,nocache: boolean,headers: Variant):string
JSONDecode(input: string):Variant
JSONEncode(input: Variant):string
PostAsync(url: Variant,data: string,content_type: Enum.HttpContentType,compress: boolean,headers: Variant):string
Miembros heredados
Muestras de código
Astronautas en el Espacio
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Haz la solicitud a nuestra URL de endpoint
local response = HttpService:GetAsync(URL_ASTROS)
-- Analiza la respuesta JSON
local data = HttpService:JSONDecode(response)
-- La información en la tabla de datos depende de la respuesta JSON
if data.message == "success" then
print("Actualmente hay " .. data.number .. " astronautas en el espacio:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " está en " .. person.craft)
end
end
¿Dónde está la Estación Espacial Internacional?
local HttpService = game:GetService("HttpService")
-- ¿Dónde está la Estación Espacial Internacional ahora mismo?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Usa pcall en caso de que algo salga mal
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- ¿Falló nuestra solicitud o falló el análisis de nuestro JSON?
if not data then
return false
end
-- Verifica completamente nuestros datos para validez. Esto depende de qué punto final estés
-- al que estás enviando tus solicitudes. Para este ejemplo, este punto final se
-- describe aquí: http://open-notify.org/Open-Notify-API/ISS-Location-Now/
if data.message == "success" and data.iss_position then
if data.iss_position.latitude and data.iss_position.longitude then
print("La Estación Espacial Internacional está actualmente en:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Éxito")
else
print("Algo salió mal")
end
Nueva publicación en Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clave de desarrollador de la API de Pastebin de
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- mantener como "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nombre de la entrada
["api_paste_code"] = "Hola, mundo", -- contenido de la entrada
["api_paste_format"] = "texto", -- formato de la entrada
["api_paste_expire_date"] = "10M", -- fecha de caducidad
["api_paste_private"] = "0", -- 0=publico, 1=no listado, 2=privado
["api_user_key"] = "", -- clave de usuario, si está en blanco publica como invitado
}
-- La API de pastebin utiliza una cadena URL codificada para los datos de la publicación
-- Otras APIs pueden usar JSON, XML u otro formato
local data = ""
for k, v in pairs(dataFields) do
data = data .. ("&%s=%s"):format(HttpService:UrlEncode(k), HttpService:UrlEncode(v))
end
data = data:sub(2) -- Eliminar el primer &
-- Aquí están los datos que estamos enviando
print(data)
-- Hacer la solicitud
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La respuesta será la URL a la nueva entrada (o una cadena de error si algo salió mal)
print(response)
Abrir Cloud a través de HttpService
-- ¡Recuerda habilitar las Solicitudes HTTP en la configuración de la experiencia!
local HttpService = game:GetService("HttpService")
local groupId = "your_group_id"
local membershipId = "your_membership_id"
local roleId = "your_role_id"
local function request()
local response = HttpService:RequestAsync({
Url = `https://apis.roblox.com/cloud/v2/groups/{groupId}/memberships/{membershipId}`, -- Actualiza la membresía de un grupo de un usuario
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- ¡Al enviar JSON, establece esto!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Establecer en el Hub de Creadores
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("La respuesta fue exitosa:", response.StatusCode, response.StatusMessage)
else
print("La respuesta devolvió un error:", response.StatusCode, response.StatusMessage)
end
print("Cuerpo de la respuesta:\n", response.Body)
print("Encabezados de la respuesta:\n", HttpService:JSONEncode(response.Headers))
end
-- Recuerda envolver la función en un 'pcall' para evitar que el script se rompa si la solicitud falla
local success, message = pcall(request)
if not success then
print("La solicitud Http falló al enviar:", message)
end

Referencia API
Propiedades
HttpEnabled
Seguridad de usuario local
Leer paralelo
Capacidades: Network
HttpService.HttpEnabled:boolean

Métodos
CreateWebStreamClient
Capacidades: Network
HttpService:CreateWebStreamClient(
streamClientType:Enum.WebStreamClientType, requestOptions:Dictionary
Parámetros
streamClientType:Enum.WebStreamClientType
requestOptions:Dictionary
Muestras de código
Cliente SSE de CreateWebStreamClient de HttpService
local HttpService = game:GetService("HttpService")
local URL_GEMINI_SSE = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key="
local geminiSecret = HttpService:GetSecret("gemini_secret") -- Supone que ya has subido tu clave de API de Gemini como un secreto local
local url_with_secret = geminiSecret:AddPrefix(URL_GEMINI_SSE) -- ¡Recuerda que los complementos no pueden acceder a secretos locales!
local function handleOpen(responseStatusCode, headers)
print("Conexión abierta con código de respuesta:", responseStatusCode)
end
local function handleMessage(message)
-- Analiza los eventos según el tipo de flujo
print("Mensaje de flujo recibido:", message)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
Url = url_with_secret,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- ¡Al enviar JSON, configúralo!
},
Body = HttpService:JSONEncode({ contents = { parts = { text ="¿Cómo funciona el protocolo SSE?" }}}),
})
local openConnection = sse_client.Opened:Connect(handleOpen)
local messageConnection = sse_client.MessageReceived:Connect(handleMessage)
sse_client.Closed:Wait()
openConnection:Disconnect()
messageConnection:Disconnect()
end
-- Recuerda envolver la función en un 'pcall' para evitar que el script se rompa si la solicitud falla
local success, message = pcall(request)
if not success then
print("WebStreamClient falló:", message)
end
HttpService CrearClienteDeFlujosWeb RawStream
local HttpService = game:GetService("HttpService")
local LOCAL_LLM_PORT = "http://localhost:11434/api/generate?stream=true"
local function handleMessage(message)
-- Analiza eventos dependiendo del tipo de flujo
-- Si el encabezado Content-Type de la respuesta es JSON, puedes decodificarlo así:
local json = HttpService:JSONDecode(message)
end
local function handleError(responseStatusCode, errorMessage)
print("Error de flujo con código de respuesta:", responseStatusCode)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
-- Servidor LLM Llama3.2 ejecutándose localmente usando Ollama
Url = LOCAL_LLM_PORT,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- ¡Cuando envíes JSON, establece esto!
},
Body = HttpService:JSONEncode({ model="llama3.2", prompt ="Dime un chiste divertido"}),
})
local messageConnection = sse_client.MessageReceived:Connect(handleMessage)
local errorConnection = sse_client.Error:Connect(handleError)
sse_client.Closed:Wait()
messageConnection:Disconnect()
errorConnection:Disconnect()
sse_client:close()
end
-- Recuerda envolver la función en un 'pcall' para evitar que el script falle si la solicitud falla
local success, message = pcall(request)
if not success then
print("WebStreamClient falló:", message)
end

GenerateGUID
Escribir paralelo
HttpService:GenerateGUID(wrapInCurlyBraces:boolean):string
Parámetros
wrapInCurlyBraces:boolean
Valor predeterminado: true
Devuelve
Muestras de código
GenerarGUID de HttpService
local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Salida de ejemplo: {4c50eba2-d2ed-4d79-bec1-02a967f49c58}

GetAsync
Proporciona
Capacidades: Network
HttpService:GetAsync(
url:Variant, nocache:boolean, headers:Variant
Parámetros
url:Variant
nocache:boolean
Valor predeterminado: false
headers:Variant
Devuelve
Muestras de código
Astronautas en el Espacio
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Haz la solicitud a nuestra URL de endpoint
local response = HttpService:GetAsync(URL_ASTROS)
-- Analiza la respuesta JSON
local data = HttpService:JSONDecode(response)
-- La información en la tabla de datos depende de la respuesta JSON
if data.message == "success" then
print("Actualmente hay " .. data.number .. " astronautas en el espacio:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " está en " .. person.craft)
end
end
¿Dónde está la Estación Espacial Internacional?
local HttpService = game:GetService("HttpService")
-- ¿Dónde está la Estación Espacial Internacional ahora mismo?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Usa pcall en caso de que algo salga mal
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- ¿Falló nuestra solicitud o falló el análisis de nuestro JSON?
if not data then
return false
end
-- Verifica completamente nuestros datos para validez. Esto depende de qué punto final estés
-- al que estás enviando tus solicitudes. Para este ejemplo, este punto final se
-- describe aquí: http://open-notify.org/Open-Notify-API/ISS-Location-Now/
if data.message == "success" and data.iss_position then
if data.iss_position.latitude and data.iss_position.longitude then
print("La Estación Espacial Internacional está actualmente en:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Éxito")
else
print("Algo salió mal")
end

GetSecret
Escribir paralelo
Capacidades: Network
HttpService:GetSecret(key:string):Secret
Parámetros
key:string
Devuelve

JSONDecode
Escribir paralelo
HttpService:JSONDecode(input:string):Variant
Parámetros
input:string
Devuelve
Variant
Muestras de código
HttpService JSONDecode
local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "éxito",
"info": {
"points": 120,
"isLeader": true,
"user": {
"id": 12345,
"name": "JohnDoe"
},
"past_scores": [50, 42, 95],
"best_friend": null
}
}
]]
local data = HttpService:JSONDecode(jsonString)
if data.message == "éxito" then
-- Dado que tab["hello"] y tab.hello son equivalentes,
-- también podrías usar data["info"]["points"] aquí:
print("Tengo " .. data.info.points .. " puntos")
if data.info.isLeader then
print("Soy el líder")
end
print("Tengo " .. #data.info.past_scores .. " puntajes anteriores")
print("Toda la información:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
end

JSONEncode
Escribir paralelo
HttpService:JSONEncode(input:Variant):string
Parámetros
input:Variant
Devuelve
Muestras de código
HttpService JSONEncode
local HttpService = game:GetService("HttpService")
local tab = {
-- Recuerda: estas líneas son equivalentes
--["message"] = "success",
message = "success",
info = {
points = 123,
isLeader = true,
user = {
id = 12345,
name = "JohnDoe",
},
past_scores = { 50, 42, 95 },
best_friend = nil,
},
}
local json = HttpService:JSONEncode(tab)
print(json)

PostAsync
Proporciona
Capacidades: Network
HttpService:PostAsync(
url:Variant, data:string, content_type:Enum.HttpContentType, compress:boolean, headers:Variant
Parámetros
url:Variant
data:string
Valor predeterminado: "ApplicationJson"
compress:boolean
Valor predeterminado: false
headers:Variant
Devuelve
Muestras de código
Nueva publicación en Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clave de desarrollador de la API de Pastebin de
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- mantener como "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nombre de la entrada
["api_paste_code"] = "Hola, mundo", -- contenido de la entrada
["api_paste_format"] = "texto", -- formato de la entrada
["api_paste_expire_date"] = "10M", -- fecha de caducidad
["api_paste_private"] = "0", -- 0=publico, 1=no listado, 2=privado
["api_user_key"] = "", -- clave de usuario, si está en blanco publica como invitado
}
-- La API de pastebin utiliza una cadena URL codificada para los datos de la publicación
-- Otras APIs pueden usar JSON, XML u otro formato
local data = ""
for k, v in pairs(dataFields) do
data = data .. ("&%s=%s"):format(HttpService:UrlEncode(k), HttpService:UrlEncode(v))
end
data = data:sub(2) -- Eliminar el primer &
-- Aquí están los datos que estamos enviando
print(data)
-- Hacer la solicitud
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La respuesta será la URL a la nueva entrada (o una cadena de error si algo salió mal)
print(response)

RequestAsync
Proporciona
Capacidades: Network
HttpService:RequestAsync(requestOptions:Dictionary):Dictionary
Parámetros
requestOptions:Dictionary
Devuelve
Muestras de código
Enviando una solicitud HTTP
-- ¡Recuerda habilitar las solicitudes HTTP en la configuración de la experiencia!
local HttpService = game:GetService("HttpService")
local function request()
local response = HttpService:RequestAsync({
Url = "http://httpbin.org/post", -- Este sitio web ayuda a depurar solicitudes HTTP
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- ¡Cuando envíes JSON, establece esto!
},
Body = HttpService:JSONEncode({ hello = "world" }),
})
if response.Success then
print("Código de estado:", response.StatusCode, response.StatusMessage)
print("Cuerpo de la respuesta:\n", response.Body)
else
print("La solicitud falló:", response.StatusCode, response.StatusMessage)
end
end
-- ¡Recuerda envolver la función en un 'pcall' para evitar que el script se rompa si la solicitud falla!
local success, message = pcall(request)
if not success then
print("La solicitud HTTP falló:", message)
end
Abrir Cloud a través de HttpService
-- ¡Recuerda habilitar las Solicitudes HTTP en la configuración de la experiencia!
local HttpService = game:GetService("HttpService")
local groupId = "your_group_id"
local membershipId = "your_membership_id"
local roleId = "your_role_id"
local function request()
local response = HttpService:RequestAsync({
Url = `https://apis.roblox.com/cloud/v2/groups/{groupId}/memberships/{membershipId}`, -- Actualiza la membresía de un grupo de un usuario
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- ¡Al enviar JSON, establece esto!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Establecer en el Hub de Creadores
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("La respuesta fue exitosa:", response.StatusCode, response.StatusMessage)
else
print("La respuesta devolvió un error:", response.StatusCode, response.StatusMessage)
end
print("Cuerpo de la respuesta:\n", response.Body)
print("Encabezados de la respuesta:\n", HttpService:JSONEncode(response.Headers))
end
-- Recuerda envolver la función en un 'pcall' para evitar que el script se rompa si la solicitud falla
local success, message = pcall(request)
if not success then
print("La solicitud Http falló al enviar:", message)
end

UrlEncode
Escribir paralelo
Capacidades: Network
HttpService:UrlEncode(input:string):string
Parámetros
input:string
Devuelve
Muestras de código
HttpService UrlEncode
local HttpService = game:GetService("HttpService")
local content = "Je suis allé au cinéma." -- Francés por "Fui al cine"
local result = HttpService:UrlEncode(content)
print(result) --> Je%20suis%20all%C3%A9%20au%20cinema%2E
Nueva publicación en Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clave de desarrollador de la API de Pastebin de
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- mantener como "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nombre de la entrada
["api_paste_code"] = "Hola, mundo", -- contenido de la entrada
["api_paste_format"] = "texto", -- formato de la entrada
["api_paste_expire_date"] = "10M", -- fecha de caducidad
["api_paste_private"] = "0", -- 0=publico, 1=no listado, 2=privado
["api_user_key"] = "", -- clave de usuario, si está en blanco publica como invitado
}
-- La API de pastebin utiliza una cadena URL codificada para los datos de la publicación
-- Otras APIs pueden usar JSON, XML u otro formato
local data = ""
for k, v in pairs(dataFields) do
data = data .. ("&%s=%s"):format(HttpService:UrlEncode(k), HttpService:UrlEncode(v))
end
data = data:sub(2) -- Eliminar el primer &
-- Aquí están los datos que estamos enviando
print(data)
-- Hacer la solicitud
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La respuesta será la URL a la nueva entrada (o una cadena de error si algo salió mal)
print(response)

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.