HttpService

Mostrar obsoleto

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

No creable
Servicio

HttpService permite que las solicitudes HTTP se envíen desde los servidores del juego usando RequestAsync , GetAsync y PostAsync .Este servicio permite que los juegos se integren con servicios web fuera de Roblox como Análisis, almacenamiento de datos, configuración de servidores remotos, informes de errores, cálculos avanzados o comunicación en tiempo real.

HttpService también alberga los métodos JSONEncode y JSONDecode que son útiles para comunicarse con servicios que usan el formato JSON.Además, el método GenerateGUID proporciona etiquetas aleatorias de 128 bits que se pueden tratar como únicas de forma probabilística en una variedad de escenarios.

Solo deberías enviar solicitudes HTTP a plataformas de terceros confiables para evitar poner tu experiencia vulnerable a riesgos de seguridad.

Esta propiedad no se puede interactuar en tiempo de ejecución.

Activar solicitudes HTTP

Los métodos de envío de solicitudes no están habilitados de forma predeterminada. Para enviar solicitudes, debes habilitar solicitudes HTTP para tu experiencia.

Usar en plugins

HttpService se puede usar por los plugins de Studio.Pueden hacer esto para verificar actualizaciones, enviar datos de uso, descargar contenido o otra lógica empresarial.La primera vez que un plugin intente hacer esto, al usuario se le puede solicitar que dé permiso al plugin para comunicarse con la dirección web específica.Un usuario puede aceptar, rechazar y revocar tales permisos en cualquier momento a través de la ventana Administración de plugins .

Los plugins también pueden comunicarse con otro software que se ejecuta en la misma computadora a través de los hosts localhost y 127.0.0.1.Al ejecutar programas compatibles con tales plugins, puedes extender la funcionalidad de tu plugin más allá de las capacidades normales de Studio, como interactuar con el sistema de archivos de tu computadora.Tenga en cuenta que tal software debe distribuirse por separado del propio plugin y puede representar peligros de seguridad si no es cuidadoso.

Consideraciones adicionales
  • Hay restricciones de puerto.No puedes usar el puerto 1194 o cualquier puerto por debajo de 1024, excepto 80 y 443.Si intentas usar un puerto bloqueado, recibirás un error de 403 Forbidden o ERR_ACCESS_DENIED.
  • Para cada servidor de juegos de Roblox, hay un límite de 500 solicitudes HTTP por minuto.Exceder esto puede causar que los métodos de envío de solicitudes se detengan por completo durante unos 30 segundos.
  • Las solicitudes no se pueden hacer a ningún sitio web de Roblox, como www.roblox.com.
  • Las solicitudes web pueden fallar por muchas razones, por lo que es importante "código defensivo" (usar pcall() ) y tener un plan para cuando las solicitudes fallan.
  • Aunque se soporte el protocolo http://, deberías usar https:// donde sea posible.
  • Las solicitudes enviadas deben proporcionar una forma segura de autenticación, como una clave secreta previamente compartida, para que los actores malos no puedan fingir ser uno de tus servidores de juegos de Roblox.
  • Tenga en cuenta la capacidad general y las políticas de limitación de velocidad de los servidores web a los que se envían solicitudesadpo

Muestras de código

This code sample uses HttpService's GetAsync to make a request to Open Notify, a web service that provides data from NASA. The request is made to an endpoint that provides information on how many astronauts are currently in space. The response is provided in JSON format, so it is parsed using JSONDecode. Finally, the response data is then processed and printed to the Output.

Test this script by pasting the source code into a Script (HttpService cannot be used by LocalScripts). Also, be sure to enable HTTP Requests in your Game Settings (Home > Game Settings).

Astronauts in Space

local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Make the request to our endpoint URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Parse the JSON response
local data = HttpService:JSONDecode(response)
-- Information in the data table is dependent on the response JSON
if data.message == "success" then
print("There are currently " .. data.number .. " astronauts in space:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " is on " .. person.craft)
end
end

This code sample uses HttpService's GetAsync to make a request to an endpoint at Open Notify, a website that provides information from NASA. The endpoint provides information on the current location of the International Space Station. This example uses a defensive coding technique that you should use when making web requests. It wraps the call to GetAsync and JSONDecode in pcall, which protects our script from raising an error if either of these fail. Then, it checks the raw response for all proper data before using it. All of this is put inside a function that returns true or false depending of the request's success.

Whenever you're working with web requests, you should prepare for anything to go wrong. Perhaps your web endpoint changes or goes down - you don't want your game scripts raising errors and breaking your game. You want to handle both success and failure gracefully - have a plan in case your data is not available. Use pcall and make plenty of validity checks (if statements) on your data to make sure you're getting exactly what you expect.

Where is the International Space Station?

local HttpService = game:GetService("HttpService")
-- Where is the International Space Station right now?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Use pcall in case something goes wrong
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Did our request fail or our JSON fail to parse?
if not data then
return false
end
-- Fully check our data for validity. This is dependent on what endpoint you're
-- to which you're sending your requests. For this example, this endpoint is
-- described here: 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("The International Space Station is currently at:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Success")
else
print("Something went wrong")
end

Pastebin.com is a website that allows users to paste text (usually source code) for others to view publicly. This code sample uses HttpService PostAsync and the pastebin web API to automatically create a new public paste on the website. Since pastebin's API is designed to take data in as a URL encoded string, the code uses a for-loop to turn the dataFields table into a URL encoded string, such as hello=world&foo=bar. This is used as the HTTP POST data.

Test this code by first going to pastebin.com/api#1 and getting an API key (you'll need a pastebin account to do this). Then, paste your unique developer API key into the field api_dev_key in the code sample's dataFields table. Fill in any other information about the post you want to make, then run this code in a Script (not a LocalScript). If all goes well, you'll get a URL to your new paste in the Output window (or some error string from pastebin).

New Pastebin Post

local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API developer key from
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- keep as "paste"
["api_paste_name"] = "HttpService:PostAsync", -- paste name
["api_paste_code"] = "Hello, world", -- paste content
["api_paste_format"] = "text", -- paste format
["api_paste_expire_date"] = "10M", -- expire date
["api_paste_private"] = "0", -- 0=public, 1=unlisted, 2=private
["api_user_key"] = "", -- user key, if blank post as guest
}
-- The pastebin API uses a URL encoded string for post data
-- Other APIs might use JSON, XML or some other format
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) -- Remove the first &
-- Here's the data we're sending
print(data)
-- Make the request
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- The response will be the URL to the new paste (or an error string if something was wrong)
print(response)

Resumen

Propiedades

  • Seguridad de usuario local
    Leer paralelo

    Indica si las solicitudes HTTP se pueden enviar a sitios web externos.

Métodos

Propiedades

HttpEnabled

Seguridad de usuario local
Leer paralelo

Cuando se establece en true, permite que los scripts envíen solicitudes a sitios web usando HttpService:GetAsync(), HttpService:PostAsync() y HttpService:RequestAsync().

Esta propiedad debe alternarse a través de la interfaz Ajustes del juego en Studio, o para experiencias no publicadas al establecer esta propiedad a : usando la barra de comandos :

game:GetService("HttpService").HttpEnabled = true

Métodos

GenerateGUID

Escribir paralelo

Este método genera una cadena aleatoria universalmente única identificadora (UUID).Los dieciséis bytes de un UUID se representan como treinta y dos dígitos hexadecimales (base dieciséis) separados por guiones en la forma 8-4-4-4-12 para un total de 36 caracteres, por ejemplo 123e4567-e89b-12d3-a456-426655440000 .

La especificación UUID utilizada es Versión 4 (aleatoria), variante 1 (DCE 1.1, ISO/IEC 11578:1996).Los UUID de esta versión son los más comúnmente utilizados debido a su simplicidad, ya que se generan completamente aleatoriamente.Tenga en cuenta que esta versión no tiene ciertas características que otras versiones de UUID tienen, como marcas de tiempo codificadas, direcciones MAC o clasificación basada en el tiempo como UUIDv7 o ULID.

Hay más de 5.3×10 36 UUIDs únicos v4, en los que la probabilidad de encontrar una duplicación dentro de 103 trillones de UUIDs es de una en mil millones.

El argumento wrapInCurlyBraces determina si la cadena devuelta está envuelta en curly braces ( {} ). Por instancia:

  • true : {94b717b2-d54f-4340-a504-bd809ef5bf5c}
  • false : db454790-7563-44ed-ab4b-397ff5df737b

Parámetros

wrapInCurlyBraces: boolean

Si la cadena devuelta debe ser envuelta en curly braces ( {} ).

Valor predeterminado: true

Devuelve

El UUID generado aleatoriamente.

Muestras de código

This example uses HttpService's GenerateGUID method to generate and print a universally unique identifier.

HttpService GenerateGUID

local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Example output: {4c50eba2-d2ed-4d79-bec1-02a967f49c58}

GetSecret

Escribir paralelo

Este método devuelve un valor que se agregó anteriormente a la tienda de secretos para la experiencia.El contenido secreto no es imprimible y no está disponible cuando la experiencia se ejecuta localmente.

El devuelto Secret se puede transformar usando métodos integrados como Secret:AddPrefix(). Se espera que se envíe como parte de una solicitud HTTP.

Para obtener más información, consulte la guía de uso.

Parámetros

key: string
Valor predeterminado: ""

Devuelve

JSONDecode

Variant
Escribir paralelo

Este método transforma un objeto JSON o array en una tabla Luau con las siguientes características:

  • Las claves de la tabla son cadenas o números, pero no ambas. Si un objeto JSON contiene ambas, las claves de cadena se ignoran.
  • Un objeto JSON vacío genera una tabla Luau vacía ( {} ).
  • Si la cadena input no es un objeto JSON válido, este método lanzará un error.

Para codificar una tabla Luau en un objeto JSON, use el método HttpService:JSONEncode().

Este método se puede usar independientemente de si las solicitudes HTTP están habilitadas.

Parámetros

input: string

El objeto JSON que se está decodificando.

Valor predeterminado: ""

Devuelve

Variant

El objeto JSON decodificado como una tabla Luau.

Muestras de código

This code sample gives an example JSON format string and parses it using HttpService's JSONDecode. It then verifies that the JSON was parsed correctly, and prints out some of the information within the object.

Try editing the JSON string to experiment with the format. Also experiment with inspecting the data in Lua to get comfortable with the Lua representation of the data (tables and other values).

HttpService JSONDecode

local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "success",
"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 == "success" then
-- Since tab["hello"] and tab.hello are equivalent,
-- you could also use data["info"]["points"] here:
print("I have " .. data.info.points .. " points")
if data.info.isLeader then
print("I am the leader")
end
print("I have " .. #data.info.past_scores .. " past scores")
print("All the information:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
end

JSONEncode

Escribir paralelo

Este método transforma una tabla Luau en un objeto o array JSON basado en las siguientes directrices:

  • Las claves de la tabla deben ser cadenas o números. Si una tabla contiene ambas, un array tiene prioridad (se ignoran las claves de cadena).

  • Una tabla vacía de Luau ( {} ) genera un matriz/listaJSON vacío.

  • El valor nil nunca se genera.

  • Las referencias de tabla cíclicas causan un error.

    Este método permite valores como inf y nan que no son JSON válidos.Esto puede causar problemas si desea utilizar el JSON generado en otra parte.

Para revertir el proceso de codificación y decodificar un objeto JSON, utilice el método HttpService:JSONDecode().

Este método se puede usar independientemente de si las solicitudes HTTP están habilitadas.

Parámetros

input: Variant

La tabla de entrada Luau.

Valor predeterminado: ""

Devuelve

La cadena JSON devuelta.

Muestras de código

This code sample turns a Lua table tab into a JSON string using HttpService's JSONEncode. Then, it prints out the string.

Try editing the Lua table to see how the JSON output changes.

HttpService JSONEncode

local HttpService = game:GetService("HttpService")
local tab = {
-- Remember: these lines are equivalent
--["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)

UrlEncode

Escribir paralelo

Este método codifica porcentualmente una cadena dada para que los caracteres reservados se codifiquen correctamente con % y dos caracteres hexadecimales.

Esto es útil al formatear URL para su uso con HttpService:GetAsync() / HttpService:PostAsync() o POST datos del tipo de medios application/x-www-form-urlencoded ( Enum.HttpContentType.ApplicationUrlEncoded ).

Por instancia, cuando codifiques la URL https://www.roblox.com/discover#/, este método devuelve https%3A%2F%2Fwww%2Eroblox%2Ecom%2Fdiscover%23%2F .

Parámetros

input: string

La cadena (URL) para codificar.

Valor predeterminado: ""

Devuelve

La cadena codificada.

Muestras de código

This code sample uses UrlEncode to turn a string into a safe, percent-encoded string that can be used in a URL as an argument. Notice how only unreserved characters (letters, numbers and -_.~) are not transformed into percent-encoded equivalents. Characters with accents are also transformed (for example é is transformed into %C3).

HttpService UrlEncode

local HttpService = game:GetService("HttpService")
local content = "Je suis allé au cinéma." -- French for "I went to the movies"
local result = HttpService:UrlEncode(content)
print(result) --> Je%20suis%20all%C3%A9%20au%20cinema%2E

Pastebin.com is a website that allows users to paste text (usually source code) for others to view publicly. This code sample uses HttpService PostAsync and the pastebin web API to automatically create a new public paste on the website. Since pastebin's API is designed to take data in as a URL encoded string, the code uses a for-loop to turn the dataFields table into a URL encoded string, such as hello=world&foo=bar. This is used as the HTTP POST data.

Test this code by first going to pastebin.com/api#1 and getting an API key (you'll need a pastebin account to do this). Then, paste your unique developer API key into the field api_dev_key in the code sample's dataFields table. Fill in any other information about the post you want to make, then run this code in a Script (not a LocalScript). If all goes well, you'll get a URL to your new paste in the Output window (or some error string from pastebin).

New Pastebin Post

local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API developer key from
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- keep as "paste"
["api_paste_name"] = "HttpService:PostAsync", -- paste name
["api_paste_code"] = "Hello, world", -- paste content
["api_paste_format"] = "text", -- paste format
["api_paste_expire_date"] = "10M", -- expire date
["api_paste_private"] = "0", -- 0=public, 1=unlisted, 2=private
["api_user_key"] = "", -- user key, if blank post as guest
}
-- The pastebin API uses a URL encoded string for post data
-- Other APIs might use JSON, XML or some other format
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) -- Remove the first &
-- Here's the data we're sending
print(data)
-- Make the request
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- The response will be the URL to the new paste (or an error string if something was wrong)
print(response)

GetAsync

Proporciona

Este método envía una solicitud HTTP GET .Funciona de manera similar a RequestAsync() excepto que acepta parámetros de solicitud HTTP como parámetros de método en lugar de un diccionario único y devuelve solo el cuerpo de la respuesta HTTP.En general, este método solo es útil como abreviatura y RequestAsync() debe usarse en la mayoría de los casos.

Cuando true , el parámetro nocache impide que este método almacene los resultados de las llamadas anteriores con el mismo url.

Parámetros

url: Variant

La dirección web de la que solicita datos.

Valor predeterminado: ""
nocache: boolean

Si la solicitud almacena (缓存) la respuesta.

Valor predeterminado: false
headers: Variant

Se usa para especificar algunos encabezados de solicitud HTTP.

Valor predeterminado: ""

Devuelve

El cuerpo de respuesta de la solicitud GET.

Muestras de código

This code sample uses HttpService's GetAsync to make a request to Open Notify, a web service that provides data from NASA. The request is made to an endpoint that provides information on how many astronauts are currently in space. The response is provided in JSON format, so it is parsed using JSONDecode. Finally, the response data is then processed and printed to the Output.

Test this script by pasting the source code into a Script (HttpService cannot be used by LocalScripts). Also, be sure to enable HTTP Requests in your Game Settings (Home > Game Settings).

Astronauts in Space

local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Make the request to our endpoint URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Parse the JSON response
local data = HttpService:JSONDecode(response)
-- Information in the data table is dependent on the response JSON
if data.message == "success" then
print("There are currently " .. data.number .. " astronauts in space:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " is on " .. person.craft)
end
end

This code sample uses HttpService's GetAsync to make a request to an endpoint at Open Notify, a website that provides information from NASA. The endpoint provides information on the current location of the International Space Station. This example uses a defensive coding technique that you should use when making web requests. It wraps the call to GetAsync and JSONDecode in pcall, which protects our script from raising an error if either of these fail. Then, it checks the raw response for all proper data before using it. All of this is put inside a function that returns true or false depending of the request's success.

Whenever you're working with web requests, you should prepare for anything to go wrong. Perhaps your web endpoint changes or goes down - you don't want your game scripts raising errors and breaking your game. You want to handle both success and failure gracefully - have a plan in case your data is not available. Use pcall and make plenty of validity checks (if statements) on your data to make sure you're getting exactly what you expect.

Where is the International Space Station?

local HttpService = game:GetService("HttpService")
-- Where is the International Space Station right now?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Use pcall in case something goes wrong
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Did our request fail or our JSON fail to parse?
if not data then
return false
end
-- Fully check our data for validity. This is dependent on what endpoint you're
-- to which you're sending your requests. For this example, this endpoint is
-- described here: 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("The International Space Station is currently at:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Success")
else
print("Something went wrong")
end

PostAsync

Proporciona

Este método envía una solicitud HTTP POST .Funciona de manera similar a RequestAsync() excepto que acepta parámetros de solicitud HTTP como parámetros de método en lugar de un diccionario único y devuelve solo el cuerpo de la respuesta HTTP.En general, este método solo es útil como abreviatura y RequestAsync() debe usarse en la mayoría de los casos.

Cuando true, el parámetro compress controla si los grandes cuerpos de solicitud se comprimirán usando gzip .

Parámetros

url: Variant

La dirección de destino para los datos.

Valor predeterminado: ""
data: string

Los datos que se adpo

Valor predeterminado: ""
content_type: Enum.HttpContentType

Modifica el valor en el encabezado Content-Type enviado con la solicitud.

Valor predeterminado: "ApplicationJson"
compress: boolean

Determina si los datos están comprimidos ( gzipped ) al adpo

Valor predeterminado: false
headers: Variant

Se usa para especificar algunos encabezados de solicitud HTTP.

Valor predeterminado: ""

Devuelve

La respuesta HTTP devuelta que indica el resultado de la solicitud.

Muestras de código

Pastebin.com is a website that allows users to paste text (usually source code) for others to view publicly. This code sample uses HttpService PostAsync and the pastebin web API to automatically create a new public paste on the website. Since pastebin's API is designed to take data in as a URL encoded string, the code uses a for-loop to turn the dataFields table into a URL encoded string, such as hello=world&foo=bar. This is used as the HTTP POST data.

Test this code by first going to pastebin.com/api#1 and getting an API key (you'll need a pastebin account to do this). Then, paste your unique developer API key into the field api_dev_key in the code sample's dataFields table. Fill in any other information about the post you want to make, then run this code in a Script (not a LocalScript). If all goes well, you'll get a URL to your new paste in the Output window (or some error string from pastebin).

New Pastebin Post

local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API developer key from
-- https://pastebin.com/api#1
["api_dev_key"] = "FILL THIS WITH YOUR API DEVELOPER KEY",
["api_option"] = "paste", -- keep as "paste"
["api_paste_name"] = "HttpService:PostAsync", -- paste name
["api_paste_code"] = "Hello, world", -- paste content
["api_paste_format"] = "text", -- paste format
["api_paste_expire_date"] = "10M", -- expire date
["api_paste_private"] = "0", -- 0=public, 1=unlisted, 2=private
["api_user_key"] = "", -- user key, if blank post as guest
}
-- The pastebin API uses a URL encoded string for post data
-- Other APIs might use JSON, XML or some other format
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) -- Remove the first &
-- Here's the data we're sending
print(data)
-- Make the request
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- The response will be the URL to the new paste (or an error string if something was wrong)
print(response)

RequestAsync

Proporciona

Este método envía una solicitud HTTP usando un diccionario para especificar los datos de la solicitud, como la URL objetivo, el método, las cabeceras y los datos del cuerpo de la solicitud.Devuelve un diccionario que describe los datos de respuesta recibidos.Opcionalmente, la solicitud se puede comprimir usando Enum.HttpCompression .

Solicitar campos de diccionario

<th>Tipo</th>
<th>Requerido</th>
<th>Descripción</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Url</code></td>
<td>Cadena</td>
<td>sí</td>
<td>La URL objetivo para esta solicitud. Debe usar <code>http</code> o <code>https</code> protocolos.</td>
</tr>
<tr>
<td><code>Método</code></td>
<td>Cadena</td>
<td>no</td>
<td>El método HTTP que se está utilizando por esta solicitud, más a menudo <code>GET</code> o <code>POST</code> .</td>
</tr>
<tr>
<td><code>Títulos</code></td>
<td>Diccionario</td>
<td>no</td>
<td>Un diccionario de encabezados para usar con esta solicitud. La mayoría de los encabezados HTTP se aceptan aquí, pero no todos/todas.</td>
</tr>
<tr>
<td><code>Cuerpo</code></td>
<td>Cadena</td>
<td>no</td>
<td>El cuerpo de la solicitud.Puede ser cualquier cadena, incluidos datos binarios.Debe excluirse al usar los métodos HTTP <code>GET</code> o <code>HEAD</code>.Puede ser necesario especificar el encabezado <code>Tipo de contenido</code> al enviar JSON u otros formatos.</td>
</tr>
<tr>
<td><code>Compresión</code></td>
<td><code>Enum.HttpComprimación</code></td>
<td>no</td>
<td>Un campo de compresión opcional que comprimirá los datos de la solicitud.El valor puede ser <code>Enum.HttpCompression.None</code> o <code>Enum.HttpCompression.Gzip</code>.</td>
</tr>
</tbody>
Nombre
Métodos HTTP admitidos

Los métodos de solicitud HTTP especifican el propósito de la solicitud que se realiza y lo que se espera si la solicitud tiene éxito.Por instancia, el método de solicitud GET le dice al servidor en la dirección solicitada que se está solicitando un recurso y, si tiene éxito, se devolverá el recurso en esa dirección.Del mismo modo, el método de solicitud HEAD hace lo mismo excepto que el servidor sabe devolver una respuesta sin un elemento Body.


<th>Descripción</th>
<th>Seguro</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>OBTENER</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/GET">ⓘ</a></td>
<td>El método <code>GET</code> solicita la recurso en la dirección especificada. No soporta el uso del parámetro <code>Cuerpo</code>.</td>
<td>Sí</td>
</tr>
<tr>
<td><code>Cabeza</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/HEAD">ⓘ</a></td>
<td>El método <code>Cabeza</code> solicita una respuesta idéntica a una solicitud <code>GET</code> pero sin cuerpo de respuesta.No soporta el uso del parámetro <code>Cuerpo</code>.</td>
<td>Sí</td>
</tr>
<tr>
<td><code>POST</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/POST">ⓘ</a></td>
<td>El método POST envía los datos del cuerpo suministrados a la dirección solicitada.</td>
<td>No</td>
</tr>
<tr>
<td><code>PONER</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PUT">ⓘ</a></td>
<td>El método PUT reemplaza todas las iteraciones actuales del recurso especificado dentro de los datos de cuerpo suministrados.</td>
<td>No</td>
</tr>
<tr>
<td><code>ELIMINAR</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/DELETE">ⓘ</a></td>
<td>El método <code>ELIMINAR</code> elimina el recurso especificado en los datos de <code>Cuerpo</code> proporcionados en la dirección solicitada.</td>
<td>No</td>
</tr>
<tr>
<td><code>OPCIONES</code>    <a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/OPTIONS">ⓘ</a></td>
<td>El método <code>OPCIONES</code> solicita las opciones de comunicación permitidas para la dirección suministrada.</td>
<td>Sí</td>
</tr>
<tr>
<td><code>RASTRO</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/TRACE">ⓘ</a></td>
<td>El método <code>RASTRO</code> realiza una prueba de bucle de mensajes en el camino hacia el recurso especificado en los datos <code>Cuerpo</code> entregados.</td>
<td>Sí</td>
</tr>
<tr>
<td><code>PARCHE</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PATCH">ⓘ</a></td>
<td>El método PARCHE aplica cambios parciales a la recurso especificado en los datos del cuerpo suministrados en la dirección solicitada.</td>
<td>No</td>
</tr>
</tbody>
Método
Encabezados HTTP

En el diccionario de solicitudes, puedes especificar cabeceras HTTP personalizadas para usar en la solicitud.Sin embargo, algunos encabezados no se pueden especificar.Por ejemplo, Content-Length se determina desde el cuerpo de la solicitud.User-Agent y Roblox-Id están bloqueados por Roblox.Otros encabezados como Accept o Cache-Control usan valores predeterminados, pero se pueden anular.Más comúnmente, algunas API de REST pueden requerir que las claves de API u otra autenticación de servicio se especifiquen en los encabezados de solicitud.

El método RequestAsync() no detecta el formato del contenido del cuerpo.Muchos servidores web requieren que el encabezado Content-Type se establezca apropiadamente al enviar ciertos formatos.Otros métodos de utilizan el enum; para este método, establezca el encabezado apropiadamente: , , , o son valores de cabecera de reemplazo para los respectivos valores de enum.

Campos del diccionario de respuesta

RequestAsync() devuelve un diccionario que contiene los siguientes campos:


<th>Tipo</th>
<th>Descripción</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Éxito</code></td>
<td>Booleana</td>
<td>El estado de éxito de la solicitud. Esto es cierto si y solo si el <code>StatusCode</code> está dentro del rango <code>200</code> - <code>299</code>.</td>
</tr>
<tr>
<td><code>Código de estado</code></td>
<td>Entero</td>
<td>El código de respuesta HTTP que identifica el estado de la respuesta.</td>
</tr>
<tr>
<td><code>Mensaje de estado</code></td>
<td>Cadena</td>
<td>El mensaje de estado que se envió de volver.</td>
</tr>
<tr>
<td><code>Títulos</code></td>
<td>Diccionario</td>
<td>Un diccionario de encabezados que se establecieron en esta respuesta.</td>
</tr>
<tr>
<td><code>Cuerpo</code></td>
<td />
<td>El cuerpo de la solicitud (el contenido) recibido en la respuesta.</td>
</tr>
</tbody>
Nombre
Casos de error

RequestAsync() levanta un error si el tiempo de respuesta expira o si el servidor objetivo rechaza la solicitud.Si un servicio web se cae por alguna razón, puede causar que los scripts que usan este método dejen de funcionar por completo.A menudo es una buena idea envolver las llamadas a este método en pcall() y manejar con gracia los casos de fallo si la información requerida no está disponible.

Limitaciones

La limitación actual para enviar y recibir solicitudes HTTP es de 500 solicitudes por minuto.Las solicitudes por encima de este umbral fallarán.Además, se excluyen los dominios de Roblox.Esto significa que las solicitudes HTTP no se pueden enviar a ningún sitio propiedad de Roblox como www.roblox.com.

Parámetros

requestOptions: Dictionary

Un diccionario que contiene información para solicitar al servidor especificado.

Valor predeterminado: ""

Devuelve

Un diccionario que contiene información de respuesta del servidor especificado.

Muestras de código

This code sample demonstrates sending a single HTTP POST request with JSON data to the website httpbin.org, a website that helps debug HTTP requests. Here, we send some JSON data by using HttpService:JSONEncode() and also setting the Content-Type header.

Sending an HTTP Request

-- Remember to set enable HTTP Requests in game settings!
local HttpService = game:GetService("HttpService")
local function request()
local response = HttpService:RequestAsync({
Url = "http://httpbin.org/post", -- This website helps debug HTTP requests
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- When sending JSON, set this!
},
Body = HttpService:JSONEncode({ hello = "world" }),
})
if response.Success then
print("Status code:", response.StatusCode, response.StatusMessage)
print("Response body:\n", response.Body)
else
print("The request failed:", response.StatusCode, response.StatusMessage)
end
end
-- Remember to wrap the function in a 'pcall' to prevent the script from breaking if the request fails
local success, message = pcall(request)
if not success then
print("Http Request failed:", message)
end

Eventos