Apprendre
Classe de moteur
HttpService
Création impossible
Service

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.


Résumé
Propriétés
Méthodes
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
Membres hérités
Échantillons de code
Astronautes dans l'espace
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Faire la requête à notre URL de point de terminaison
local response = HttpService:GetAsync(URL_ASTROS)
-- Analyser la réponse JSON
local data = HttpService:JSONDecode(response)
-- Les informations dans la table de données dépendent de la réponse JSON
if data.message == "success" then
print("Il y a actuellement " .. data.number .. " astronautes dans l'espace:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " est sur " .. person.craft)
end
end
Où se trouve la Station Spatiale Internationale ?
local HttpService = game:GetService("HttpService")
-- Où se trouve la Station Spatiale Internationale en ce moment ?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Utilisez pcall au cas où quelque chose tournerait mal
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Notre demande a-t-elle échoué ou notre JSON a-t-il échoué à être analysé ?
if not data then
return false
end
-- Vérifiez complètement nos données pour validité. Cela dépend de quel endpoint vous
-- auquel vous envoyez vos demandes. Pour cet exemple, cet endpoint est
-- décrit ici : 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 Station Spatiale Internationale se trouve actuellement à :")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Succès")
else
print("Quelque chose a mal tourné")
end
Nouveau post sur Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clé développeur API de Pastebin provenant de
-- https://pastebin.com/api#1
["api_dev_key"] = "REMPLISSEZ CECI AVEC VOTRE CLÉ DÉVELOPPEUR API",
["api_option"] = "paste", -- garder comme "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nom du collage
["api_paste_code"] = "Bonjour, monde", -- contenu du collage
["api_paste_format"] = "text", -- format du collage
["api_paste_expire_date"] = "10M", -- date d'expiration
["api_paste_private"] = "0", -- 0=public, 1=non répertorié, 2=privé
["api_user_key"] = "", -- clé utilisateur, si vide, poste comme invité
}
-- L'API pastebin utilise une chaîne encodée en URL pour les données du post
-- D'autres APIs pourraient utiliser JSON, XML ou un autre 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) -- Supprimer le premier &
-- Voici les données que nous envoyons
print(data)
-- Faire la requête
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La réponse sera l'URL vers le nouveau collage (ou une chaîne d'erreur si quelque chose ne va pas)
print(response)
Ouvrir le Cloud via HttpService
-- N'oubliez pas d'activer les requêtes HTTP dans les paramètres de l'expérience !
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}`, -- Met à jour l'appartenance d'un utilisateur au groupe
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Lors de l'envoi de JSON, définissez ceci !
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Définissez dans Creator Hub
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("La réponse a été réussie :", response.StatusCode, response.StatusMessage)
else
print("La réponse a retourné une erreur :", response.StatusCode, response.StatusMessage)
end
print("Corps de la réponse :\n", response.Body)
print("En-têtes de la réponse :\n", HttpService:JSONEncode(response.Headers))
end
-- N'oubliez pas d'encapsuler la fonction dans un 'pcall' pour éviter que le script ne se casse si la requête échoue
local success, message = pcall(request)
if not success then
print("La requête HTTP a échoué à être envoyée:", message)
end

Référence API
Propriétés
HttpEnabled
Sécurité des utilisateurs locaux
Lecture parallèle
Capacités : Network
HttpService.HttpEnabled:boolean

Méthodes
CreateWebStreamClient
Capacités : Network
HttpService:CreateWebStreamClient(
streamClientType:Enum.WebStreamClientType, requestOptions:Dictionary
Paramètres
streamClientType:Enum.WebStreamClientType
requestOptions:Dictionary
Échantillons de code
HttpService CreateWebStreamClient SSE
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") -- Suppose que vous avez déjà téléchargé votre clé API Gemini comme un secret local
local url_with_secret = geminiSecret:AddPrefix(URL_GEMINI_SSE) -- Rappelez-vous que les plugins ne peuvent pas accéder aux secrets locaux!
local function handleOpen(responseStatusCode, headers)
print("Flux ouvert avec le code de réponse:", responseStatusCode)
end
local function handleMessage(message)
-- Analyser les événements en fonction du type de flux
print("Message de flux reçu:", message)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
Url = url_with_secret,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Lors de l'envoi de JSON, définissez ceci!
},
Body = HttpService:JSONEncode({ contents = { parts = { text ="Comment fonctionne le protocole SSE?" }}}),
})
local openConnection = sse_client.Opened:Connect(handleOpen)
local messageConnection = sse_client.MessageReceived:Connect(handleMessage)
sse_client.Closed:Wait()
openConnection:Disconnect()
messageConnection:Disconnect()
end
-- N'oubliez pas d'envelopper la fonction dans un 'pcall' pour éviter que le script ne se casse si la demande échoue
local success, message = pcall(request)
if not success then
print("WebStreamClient a échoué:", message)
end
HttpService CréerWebStreamClient FluxBrut
local HttpService = game:GetService("HttpService")
local LOCAL_LLM_PORT = "http://localhost:11434/api/generate?stream=true"
local function handleMessage(message)
-- Analyser les événements en fonction du type de flux
-- Si l'en-tête Content-Type de la réponse est JSON, vous pouvez le décoder comme ceci:
local json = HttpService:JSONDecode(message)
end
local function handleError(responseStatusCode, errorMessage)
print("Erreur de flux avec le code de réponse:", responseStatusCode)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
-- Serveur Llama3.2 LLM s'exécutant localement avec Ollama
Url = LOCAL_LLM_PORT,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Lors de l'envoi de JSON, définissez ceci!
},
Body = HttpService:JSONEncode({ model="llama3.2", prompt ="Raconte-moi une blague drôle"}),
})
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
-- N'oubliez pas d'envelopper la fonction dans un 'pcall' pour éviter que le script ne se casse si la demande échoue
local success, message = pcall(request)
if not success then
print("WebStreamClient a échoué:", message)
end

GenerateGUID
Écrire en parallèle
HttpService:GenerateGUID(wrapInCurlyBraces:boolean):string
Paramètres
wrapInCurlyBraces:boolean
Valeur par défaut : true
Retours
Échantillons de code
HttpService GénérerGUID
local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Exemple de sortie : {4c50eba2-d2ed-4d79-bec1-02a967f49c58}

GetAsync
Rendement
Capacités : Network
HttpService:GetAsync(
url:Variant, nocache:boolean, headers:Variant
Paramètres
url:Variant
nocache:boolean
Valeur par défaut : false
headers:Variant
Retours
Échantillons de code
Astronautes dans l'espace
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Faire la requête à notre URL de point de terminaison
local response = HttpService:GetAsync(URL_ASTROS)
-- Analyser la réponse JSON
local data = HttpService:JSONDecode(response)
-- Les informations dans la table de données dépendent de la réponse JSON
if data.message == "success" then
print("Il y a actuellement " .. data.number .. " astronautes dans l'espace:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " est sur " .. person.craft)
end
end
Où se trouve la Station Spatiale Internationale ?
local HttpService = game:GetService("HttpService")
-- Où se trouve la Station Spatiale Internationale en ce moment ?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Utilisez pcall au cas où quelque chose tournerait mal
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Notre demande a-t-elle échoué ou notre JSON a-t-il échoué à être analysé ?
if not data then
return false
end
-- Vérifiez complètement nos données pour validité. Cela dépend de quel endpoint vous
-- auquel vous envoyez vos demandes. Pour cet exemple, cet endpoint est
-- décrit ici : 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 Station Spatiale Internationale se trouve actuellement à :")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Succès")
else
print("Quelque chose a mal tourné")
end

GetSecret
Écrire en parallèle
Capacités : Network
HttpService:GetSecret(key:string):Secret
Paramètres
key:string
Retours

JSONDecode
Écrire en parallèle
HttpService:JSONDecode(input:string):Variant
Paramètres
input:string
Retours
Variant
Échantillons de code
HttpService JSONDecode
local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "succès",
"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 == "succès" then
-- Comme tab["hello"] et tab.hello sont équivalents,
-- vous pourriez également utiliser data["info"]["points"] ici:
print("J'ai " .. data.info.points .. " points")
if data.info.isLeader then
print("Je suis le leader")
end
print("J'ai " .. #data.info.past_scores .. " scores passés")
print("Toutes les informations:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
end

JSONEncode
Écrire en parallèle
HttpService:JSONEncode(input:Variant):string
Paramètres
input:Variant
Retours
Échantillons de code
HttpService JSONEncode
local HttpService = game:GetService("HttpService")
local tab = {
-- Rappelez-vous : ces lignes sont équivalentes
--["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
Rendement
Capacités : Network
HttpService:PostAsync(
url:Variant, data:string, content_type:Enum.HttpContentType, compress:boolean, headers:Variant
Paramètres
url:Variant
data:string
Valeur par défaut : "ApplicationJson"
compress:boolean
Valeur par défaut : false
headers:Variant
Retours
Échantillons de code
Nouveau post sur Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clé développeur API de Pastebin provenant de
-- https://pastebin.com/api#1
["api_dev_key"] = "REMPLISSEZ CECI AVEC VOTRE CLÉ DÉVELOPPEUR API",
["api_option"] = "paste", -- garder comme "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nom du collage
["api_paste_code"] = "Bonjour, monde", -- contenu du collage
["api_paste_format"] = "text", -- format du collage
["api_paste_expire_date"] = "10M", -- date d'expiration
["api_paste_private"] = "0", -- 0=public, 1=non répertorié, 2=privé
["api_user_key"] = "", -- clé utilisateur, si vide, poste comme invité
}
-- L'API pastebin utilise une chaîne encodée en URL pour les données du post
-- D'autres APIs pourraient utiliser JSON, XML ou un autre 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) -- Supprimer le premier &
-- Voici les données que nous envoyons
print(data)
-- Faire la requête
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La réponse sera l'URL vers le nouveau collage (ou une chaîne d'erreur si quelque chose ne va pas)
print(response)

RequestAsync
Rendement
Capacités : Network
HttpService:RequestAsync(requestOptions:Dictionary):Dictionary
Paramètres
requestOptions:Dictionary
Retours
Échantillons de code
Envoi d'une requête HTTP
-- N'oubliez pas d'activer les requêtes HTTP dans les paramètres de l'expérience !
local HttpService = game:GetService("HttpService")
local function request()
local response = HttpService:RequestAsync({
Url = "http://httpbin.org/post", -- Ce site web aide à déboguer les requêtes HTTP
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Lors de l'envoi de JSON, définissez ceci !
},
Body = HttpService:JSONEncode({ hello = "world" }),
})
if response.Success then
print("Code de statut :", response.StatusCode, response.StatusMessage)
print("Corps de la réponse :\n", response.Body)
else
print("La requête a échoué :", response.StatusCode, response.StatusMessage)
end
end
-- N'oubliez pas d'envelopper la fonction dans un 'pcall' pour éviter que le script ne se brise si la requête échoue
local success, message = pcall(request)
if not success then
print("La requête Http a échoué :", message)
end
Ouvrir le Cloud via HttpService
-- N'oubliez pas d'activer les requêtes HTTP dans les paramètres de l'expérience !
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}`, -- Met à jour l'appartenance d'un utilisateur au groupe
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Lors de l'envoi de JSON, définissez ceci !
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Définissez dans Creator Hub
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("La réponse a été réussie :", response.StatusCode, response.StatusMessage)
else
print("La réponse a retourné une erreur :", response.StatusCode, response.StatusMessage)
end
print("Corps de la réponse :\n", response.Body)
print("En-têtes de la réponse :\n", HttpService:JSONEncode(response.Headers))
end
-- N'oubliez pas d'encapsuler la fonction dans un 'pcall' pour éviter que le script ne se casse si la requête échoue
local success, message = pcall(request)
if not success then
print("La requête HTTP a échoué à être envoyée:", message)
end

UrlEncode
Écrire en parallèle
Capacités : Network
HttpService:UrlEncode(input:string):string
Paramètres
input:string
Retours
Échantillons de code
HttpService UrlEncode
local HttpService = game:GetService("HttpService")
local content = "Je suis allé au cinéma." -- Français pour "I went to the movies"
local result = HttpService:UrlEncode(content)
print(result) --> Je%20suis%20all%C3%A9%20au%20cinema%2E
Nouveau post sur Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Clé développeur API de Pastebin provenant de
-- https://pastebin.com/api#1
["api_dev_key"] = "REMPLISSEZ CECI AVEC VOTRE CLÉ DÉVELOPPEUR API",
["api_option"] = "paste", -- garder comme "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nom du collage
["api_paste_code"] = "Bonjour, monde", -- contenu du collage
["api_paste_format"] = "text", -- format du collage
["api_paste_expire_date"] = "10M", -- date d'expiration
["api_paste_private"] = "0", -- 0=public, 1=non répertorié, 2=privé
["api_user_key"] = "", -- clé utilisateur, si vide, poste comme invité
}
-- L'API pastebin utilise une chaîne encodée en URL pour les données du post
-- D'autres APIs pourraient utiliser JSON, XML ou un autre 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) -- Supprimer le premier &
-- Voici les données que nous envoyons
print(data)
-- Faire la requête
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- La réponse sera l'URL vers le nouveau collage (ou une chaîne d'erreur si quelque chose ne va pas)
print(response)

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.