HttpService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
HttpService permet d'envoyer des demandes HTTP depuis les serveurs de jeu en utilisant RequestAsync, GetAsync et PostAsync .Ce service permet aux jeux d'être intégrés à des services Web hors Roblox tels que l'analyse, le stockage de données, la configuration de serveurs distants, la déclaration d'erreurs, les calculs avancés ou la communication en temps réel.
HttpService abrite également les méthodes JSONEncode et JSONDecode qui sont utiles pour communiquer avec des services qui utilisent le format JSON.En outre, la méthode GenerateGUID fournit des étiquettes aléatoires de 128 bits qui peuvent être traitées comme uniques de manière probabiliste dans une variété de scénarios.
Vous ne devez envoyer des demandes HTTP que sur des plates-formes tierces de confiance pour éviter de rendre votre expérience vulnérable aux risques de sécurité.
Cette propriété ne peut pas être interagie à l'exécution.
Activer les demandes HTTP
Les méthodes d'envoi de demandes ne sont pas activées par défaut. Pour envoyer des demandes, vous devez activer les demandes HTTP pour votre expérience.
Utiliser dans les plugins
HttpService peut être utilisé par les plugins de Studio.Ils peuvent le faire pour vérifier les mises à jour, envoyer des données d'utilisation, télécharger du contenu ou une autre logique d'entreprise.La première fois qu'un plugin essaie de le faire, l'utilisateur peut être invité à donner l'autorisation au plugin de communiquer avec l'adresse web spécifique.Un utilisateur peut accepter, refuser et révoquer de telles permissions à tout moment via la fenêtre gestion des plugins .
Les plugins peuvent également communiquer avec d'autres logiciels exécutés sur le même ordinateur via les hôtes localhost et 127.0.0.1.En exécutant des programmes compatibles avec de tels plugins, vous pouvez étendre les fonctionnalités de votre plugin au-delà des capacités normales de Studio, telles que l'interaction avec le système de fichiers de votre ordinateur.Attention, ce type de logiciel doit être distribué séparément du plugin lui-même et peut présenter des risques de sécurité si vous n'êtes pas prudent.
Considerations supplémentaires
- Il y a des restrictions de port.Vous ne pouvez pas utiliser le port 1194 ou n'importe quel port inférieur à 1024, sauf 80 et 443.Si vous essayez d'utiliser un port bloqué, vous recevrez soit une erreur 403 Forbidden ou ERR_ACCESS_DENIED.
- Pour chaque serveur de jeu Roblox, il y a une limite de 500 demandes HTTP par minute.Dépasser cela peut provoquer l'arrêt complet des méthodes d'envoi de requêtes pendant environ 30 secondes.
- Les demandes ne peuvent être faites à aucun site Web Roblox, comme www.roblox.com.
- Les demandes Web peuvent échouer pour de nombreuses raisons, il est donc important de "coder défensivement" (utiliser pcall() ) et d'avoir un plan pour lorsque les demandes échouent.
- Bien que le protocole http:// soit pris en charge, vous devez utiliser https:// partout où cela est possible.
- Les demandes envoyées doivent fournir une forme sécurisée d'authentification, comme une clé secrète prépartagée, afin que les acteurs malveillants ne puissent pas se faire passer pour l'un de vos serveurs de jeu Roblox.
- Soyez conscient de la capacité générale et des politiques de limitation des taux des serveurs web auxquels les demandes sont envoyées.
Échantillons de code
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).
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.
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).
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)
Résumé
Propriétés
Indique si les demandes HTTP peuvent être envoyées à des sites Web externes.
Méthodes
Génère une chaîne aléatoire UUID/GUID, optionnellement avec des crochets courbes.
Retourne un Secret de la boutique de secrets.
Décode une chaîne JSON en table Luau.
Générer une chaîne JSON à partir d'une table Luau.
Remplace les caractères non sécurisés URL par '%' et deux caractères hexadécimaux.
Envoie une demande HTTP GET .
- PostAsync(url : Variant,data : string,content_type : Enum.HttpContentType,compress : boolean,headers : Variant):string
Envoie une demande HTTP POST .
Envoie une demande HTTP en utilisant n'importe quelle méthode HTTP donnant un dictionnaire d'informations.
Propriétés
HttpEnabled
Lorsqu'il est défini à true, les scripts peuvent envoyer des demandes aux sites Web en utilisant HttpService:GetAsync(), HttpService:PostAsync() et HttpService:RequestAsync().
Cette propriété doit être activée via l'interface paramètres du jeu dans Studio, ou pour les expériences non publiées en définissant cette propriété sur en utilisant la barre de commande :
game:GetService("HttpService").HttpEnabled = true
Méthodes
GenerateGUID
Cette méthode génère une chaîne d'identifiant universellement unique aléatoire (UUID).Les seize octets d'un UUID sont représentés comme 32 chiffres hexadécimaux (base 16) affichés en cinq groupes séparés par des hyphens dans la forme 8-4-4-4-12 pour un total de 36 caractères, par exemple 123e4567-e89b-12d3-a456-426655440000 .
La spécification UUID utilisée est version 4 (aléatoire), variante 1 (DCE 1.1, ISO/IEC 11578:1996).Les UUID de cette version sont les plus couramment utilisés en raison de leur simplicité, car ils sont entièrement générés aléatoirement.Notez que cette version n'a pas certaines fonctionnalités que d'autres versions UUID ont, telles que des horodatages codés, des adresses MAC ou un tri basé sur le temps comme UUIDv7 ou ULID.
Il y a plus de 5,3×10 36 UUIDs uniques v4, dans lesquels la probabilité de trouver un duplicat dans 103 trillions d'UUIDs est d'un milliard.
L'argument wrapInCurlyBraces détermine si la chaîne renvoyée est enroulée dans des crochets ( {} ). Par instance:
- true : {94b717b2-d54f-4340-a504-bd809ef5bf5c}
- false : db454790-7563-44ed-ab4b-397ff5df737b
Paramètres
Si la chaîne renvoyée doit être enfermée dans des crochets courbes ( {} ).
Retours
L'UUID généré aléatoirement.
Échantillons de code
This example uses HttpService's GenerateGUID method to generate and print a universally unique identifier.
local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Example output: {4c50eba2-d2ed-4d79-bec1-02a967f49c58}
GetSecret
Cette méthode renvoie une valeur précédemment ajoutée à la boutique de secrets pour l'expérience.Le contenu secret n'est pas imprimable et n'est pas disponible lorsque l'expérience s'exécute localement.
Le retourné Secret peut être transformé en utilisant des méthodes intégrées telles que Secret:AddPrefix(). Il est attendu qu'il soit envoyé comme partie d'une demandeHTTP.
Pour plus d'informations, voir le guide d'utilisation.
Paramètres
Retours
JSONDecode
Cette méthode transforme un objet JSON ou un tableau en table Luau avec les caractéristiques suivantes :
- Les clés de la table sont des chaînes ou des nombres, mais pas les deux. Si un objet JSON contient les deux, les clés de chaîne sont ignorées.
- Un objet JSON vide génère une table Luau vide ( {} ).
- Si la chaîne input n'est pas un objet JSON valide, cette méthode lancera une erreur.
Pour encoder une table Luau en objet JSON, utilisez la méthode HttpService:JSONEncode().
Cette méthode peut être utilisée indépendamment du fait que des demandes HTTP soient activées ou non.
Paramètres
L'objet JSON décodé.
Retours
L'objet JSON décodé en tant que table Luau.
Échantillons de code
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).
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
Cette méthode transforme une table Luau en objet JSON ou en array basé sur les directives suivantes :
Les clés de la table doivent être des chaînes ou des nombres. Si une table contient les deux, une chaîne d'arrêt de priorité est ignorée (les clés de chaîne sont ignorées).
Une table Luau vide ( {} ) génère un tableau JSON matrice.
La valeur nil n'est jamais générée.
Les références de table cycliques causent une erreur.
Cette méthode permet des valeurs telles que inf et nan qui ne sont pas valides JSON.Cela peut causer des problèmes si vous souhaitez utiliser le JSON produit ailleurs.
Pour inverser le processus d'encodage et décoder un objet JSON, utilisez la méthode HttpService:JSONDecode().
Cette méthode peut être utilisée indépendamment du fait que des demandes HTTP soient activées ou non.
Paramètres
La table d'entrée Luau.
Retours
La chaîne JSON retournée.
Échantillons de code
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.
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
Cette méthode encode en pourcentage une chaîne donnée afin que les caractères réservés soient correctement encodés avec % et deux caractères hexadécimaux.
Cela est utile lors de la mise en forme des URLs pour l'utilisation avec HttpService:GetAsync() / HttpService:PostAsync() ou POST les données du type de média application/x-www-form-urlencoded ( Enum.HttpContentType.ApplicationUrlEncoded ).
Par instance, lorsque vous encodez l'URL https://www.roblox.com/discover#/, cette méthode renvoie https%3A%2F%2Fwww%2Eroblox%2Ecom%2Fdiscover%23%2F .
Paramètres
La chaîne (URL) à encoder.
Retours
La chaîne encodée.
Échantillons de code
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).
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).
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
Cette méthode envoie une demande HTTP GET .Il fonctionne de manière similaire à RequestAsync() excepté qu'il accepte les paramètres de requête HTTP comme paramètres de méthode au lieu d'un seul dictionnaire et ne renvoie que le corps de la réponse HTTP.En général, cette méthode n'est utile que comme abréviation et RequestAsync() devrait être utilisée dans la plupart des cas.
Lorsque true, le paramètre nocache empêche cette méthode de stocker les résultats des appels précédents avec le même url.
Paramètres
L'adresse web à partir de laquelle vous demandez des données.
Si la demande stocke (en cache) la réponse.
Utilisé pour spécifier certains en-têtes de requête HTTP.
Retours
Le corps de la réponse de la demandeGET.
Échantillons de code
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).
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.
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
Cette méthode envoie une demande HTTP POST .Il fonctionne de manière similaire à RequestAsync() excepté qu'il accepte les paramètres de requête HTTP comme paramètres de méthode au lieu d'un seul dictionnaire et ne renvoie que le corps de la réponse HTTP.En général, cette méthode n'est utile que comme abréviation et RequestAsync() devrait être utilisée dans la plupart des cas.
Lorsque true, le paramètre compress contrôle si les grands corps de requête seront compressés en utilisant gzip .
Paramètres
L'adresse de destination des données.
Les données envoyées.
Modifie la valeur dans l'en-tête Content-Type envoyé avec la demande.
Détermine si les données sont compressées ( gzipped ) lorsqu'elles sont envoyées.
Utilisé pour spécifier certains en-têtes de requête HTTP.
Retours
La réponse HTTP renvoyée indiquant le resultatsde la demande.
Échantillons de code
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).
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
Cette méthode envoie une demande HTTP en utilisant un dictionnaire pour spécifier les données de la demande, telles que l'URL cible, la méthode, les en-têtes et les données du corps de la demande.Il renvoie un dictionnaire qui décrit les données de réponse reçues.Facultativement, la demande peut être compressée en utilisant Enum.HttpCompression .
Demander les champs du dictionnaire
<th>Type</th><th>Obligatoire</th><th>Avertissement</th></tr></thead><tbody><tr><td><code>Url</code></td><td>Texte</td><td>oui</td><td>L'URL cible pour cette demande. Doit utiliser les protocoles <code>http</code> ou <code>https</code>.</td></tr><tr><td><code>Méthode</code></td><td>Texte</td><td>no</td><td>La méthode HTTP utilisée par cette demande, le plus souvent <code>GET</code> ou <code>POST</code>.</td></tr><tr><td><code>Têtes</code></td><td>Dictionnaire</td><td>no</td><td>Un dictionnaire de têtes à utiliser avec cette demande. La plupart des en-têtes HTTP sont acceptés ici, mais pas tout.</td></tr><tr><td><code>Corps</code></td><td>Texte</td><td>no</td><td>Le corps de la demande.Peut être n'importe quelle chaîne, y compris des données binaires.Doit être exclu lors de l'utilisation des méthodes HTTP <code>GET</code> ou <code>HEAD</code>.Il peut être nécessaire de spécifier l'en-tête <code>type de contenu</code> lors de l'envoi de JSON ou d'autres formats.</td></tr><tr><td><code>Compresser</code></td><td><code>Enum.HttpCompression</code></td><td>no</td><td>Un champ de compression facultatif qui compressera les données dans la demande.La valeur peut être <code>Enum.HttpCompression.None</code> ou <code>Enum.HttpCompression.Gzip</code>.</td></tr></tbody>
Nom |
---|
Méthodes HTTP soutenues
Les méthodes de demande HTTP spécifient le but de la demande qui est faite et ce qui est attendu si la demande est réussie.Par instance, la méthode de requête GET indique au serveur à l'adresse demandée que une ressource est demandée et, si elle réussit, la ressource à cette adresse sera retournée.De même, la méthode de requête HEAD fait la même chose, sauf que le serveur sait retourner une réponse sans élément Body.
<th>Avertissement</th><th>Sûr</th></tr></thead><tbody><tr><td><code>RECEVOIR</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/GET">ⓘ</a></td><td>La méthode <code>GET</code> demande la ressource à l'adresse spécifiée. Ne prend pas en charge l'utilisation du paramètre <code>Corps</code>.</td><td>Oui</td></tr><tr><td><code>TÊTE</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/HEAD">ⓘ</a></td><td>La méthode <code>HEAD</code> demande une réponse identique à une demande <code>GET</code> mais sans corps de réponse.Ne prend pas en charge l'utilisation du paramètre <code>Corps</code>.</td><td>Oui</td></tr><tr><td><code>POST</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/POST">ⓘ</a></td><td>La méthode POST soumet les données du corps fournies à l'adresse demandée.</td><td>No</td></tr><tr><td><code>PUT</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PUT">ⓘ</a></td><td>La méthode <code>PUT</code> remplace toutes les itérations actuelles de la ressource spécifiée dans les données fournies <code>Corps</code>.</td><td>No</td></tr><tr><td><code>SUPPRIMER</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/DELETE">ⓘ</a></td><td>La méthode <code>SUPPRIMER</code> supprime la ressource spécifiée dans les données <code>corps</code> fournies à l'adresse demandée.</td><td>No</td></tr><tr><td><code>OPTIONS</code> <a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/OPTIONS">ⓘ</a></td><td>La méthode <code>OPTIONS</code> demande les options de communication autorisées pour l'adresse fournie.</td><td>Oui</td></tr><tr><td><code>TRAÎNÉE</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/TRACE">ⓘ</a></td><td>La méthode <code>TRACE</code> effectue un test de boucle de message en aval le long du chemin vers la ressource spécifiée dans les données <code>Corps</code> fournies.</td><td>Oui</td></tr><tr><td><code>PATCH</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PATCH">ⓘ</a></td><td>La méthode <code>PATCH</code> applique des modifications partielles à la ressource spécifiée dans les données <code>corps</code> fournies à l'adresse demandée.</td><td>No</td></tr></tbody>
Méthode |
---|
Têtes HTTP
Dans le dictionnaire de requête, vous pouvez spécifier des en-têtes HTTP personnalisés à utiliser dans la demande.Cependant, certains en-têtes ne peuvent pas être spécifiés.Par exemple, Content-Length est déterminé à partir du corps de la requête.User-Agent et Roblox-Id sont verrouillés par Roblox.D'autres en-têtes comme Accept ou Cache-Control utilisent des valeurs par défaut, mais peuvent être annulées.Plus couramment, certaines API REST peuvent nécessiter que les clés API ou une autre authentification de service soient spécifiées dans les en-têtes de requête.
La méthode RequestAsync() ne détecte pas le format du contenu du corps.De nombreux serveurs web nécessitent que la balise Content-Type soit définie correctement lors de l'envoi de certains formats.D'autres méthodes de utilisent l'enum ; pour cette méthode, définissez le en-tête de manière appropriée : , , , ou sont des valeurs d'en-tête de remplacement pour les valeurs d'Enum respectives.
Champs du dictionnaire de réponse
RequestAsync() renvoie un dictionnaire contenant les champs suivants :
<th>Type</th><th>Avertissement</th></tr></thead><tbody><tr><td><code>succès</code></td><td>Booléen</td><td>Le statut de réussite de la demande. C'est vrai si et seulement si le <code>StatutCode</code> se trouve dans la plage <code>200</code> - <code>299</code>.</td></tr><tr><td><code>Code statut</code></td><td>Entier</td><td>Le code de réponse HTTP qui identifie l'état de la réponse.</td></tr><tr><td><code>Message de statut</code></td><td>Texte</td><td>Le message de statut qui a été retour.</td></tr><tr><td><code>Têtes</code></td><td>Dictionnaire</td><td>Un dictionnaire de têtes qui ont été définis dans cette réponse.</td></tr><tr><td><code>Corps</code></td><td /><td>Le corps de la demande (le contenu) reçu dans la réponse.</td></tr></tbody>
Nom |
---|
Cas d'erreur
RequestAsync() lève une erreur si les temps de réponse expirent ou si le serveur cible rejette la demande.Si un service Web tombe en panne pour une raison quelconque, cela peut provoquer l'arrêt du fonctionnement de scripts qui utilisent cette méthode.Il est souvent une bonne idée d'envelopper les appels à cette méthode dans pcall() et de gérer élégamment les cas d'échec si les informations requises ne sont pas disponibles.
Limites
La limite actuelle pour l'envoi et la réception de demandes HTTP est de 500 demandes par minute.Les demandes au-dessus de ce seuil échoueront.En outre, les domaines Roblox sont exclus.Cela signifie que les demandes HTTP ne peuvent pas être envoyées à tout site appartenant à Roblox tel que www.roblox.com.
Paramètres
Un dictionnaire contenant des informations à demander au serveur spécifié.
Retours
Un dictionnaire contenant des informations de réponse du serveur spécifié.
Échantillons de code
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.
-- 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