Engine-Klasse
HttpService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Zusammenfassung
Eigenschaften
Methoden
CreateWebStreamClient(streamClientType: Enum.WebStreamClientType,requestOptions: Dictionary):WebStreamClient |
GenerateGUID(wrapInCurlyBraces: boolean):string |
JSONDecode(input: string):Variant |
JSONEncode(input: Variant):string |
PostAsync(url: Variant,data: string,content_type: Enum.HttpContentType,compress: boolean,headers: Variant):string |
RequestAsync(requestOptions: Dictionary):Dictionary |
Code-Beispiele
Astronauten im Weltraum
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Mache die Anfrage an unsere Endpunkt-URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Analysiere die JSON-Antwort
local data = HttpService:JSONDecode(response)
-- Informationen in der Datentabelle hängen von der Antwort-JSON ab
if data.message == "success" then
print("Derzeit befinden sich " .. data.number .. " Astronauten im Weltraum:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " ist auf " .. person.craft)
end
endWo ist die Internationale Raumstation?
local HttpService = game:GetService("HttpService")
-- Wo ist die Internationale Raumstation gerade?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Verwenden Sie pcall, falls etwas schiefgeht
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Ist unsere Anfrage fehlgeschlagen oder unser JSON konnte nicht geparst werden?
if not data then
return false
end
-- Überprüfen Sie unsere Daten vollständig auf Gültigkeit. Dies hängt davon ab, an
-- welchen Endpunkt Sie Ihre Anfragen senden. Für dieses Beispiel ist dieser Endpunkt
-- hier beschrieben: 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("Die Internationale Raumstation befindet sich momentan hier:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Erfolg")
else
print("Etwas ist schiefgelaufen")
endNeuer Pastebin-Post
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API-Entwicklerschlüssel von
-- https://pastebin.com/api#1
["api_dev_key"] = "FÜLLEN SIE DIESES FELD MIT IHREM API-ENTWICKLERSCHLÜSSEL",
["api_option"] = "paste", -- als "paste" beibehalten
["api_paste_name"] = "HttpService:PostAsync", -- Paste-Name
["api_paste_code"] = "Hallo, Welt", -- Paste-Inhalt
["api_paste_format"] = "text", -- Paste-Format
["api_paste_expire_date"] = "10M", -- Ablaufdatum
["api_paste_private"] = "0", -- 0=öffentlich, 1=nicht gelistet, 2=privat
["api_user_key"] = "", -- Benutzer-Schlüssel, wenn leer als Gast posten
}
-- Die Pastebin-API verwendet einen URL-kodierten String für die Postdaten
-- Andere APIs könnten JSON, XML oder ein anderes Format verwenden
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) -- Entfernen des ersten &
-- Hier sind die Daten, die wir senden
print(data)
-- Die Anfrage stellen
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Die Antwort wird die URL zum neuen Paste (oder eine Fehlermeldung, wenn etwas schiefgelaufen ist) sein
print(response)Cloud über HttpService öffnen
-- Vergessen Sie nicht, HTTP-Anforderungen in den Einstellungen der Erfahrung zu aktivieren!
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}`, -- Aktualisiert die Gruppenmitgliedschaft eines Benutzers
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Beim Senden von JSON, dies setzen!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Im Creator Hub festgelegt
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("Die Antwort war erfolgreich:", response.StatusCode, response.StatusMessage)
else
print("Die Antwort gab einen Fehler zurück:", response.StatusCode, response.StatusMessage)
end
print("Antwortkörper:\n", response.Body)
print("Antwort-Header:\n", HttpService:JSONEncode(response.Headers))
end
-- Vergessen Sie nicht, die Funktion in ein 'pcall' zu wickeln, um zu verhindern, dass das Skript abstürzt, wenn die Anfrage fehlschlägt
local success, message = pcall(request)
if not success then
print("Die Http-Anforderung konnte nicht gesendet werden:", message)
endAPI-Referenz
Eigenschaften
Methoden
CreateWebStreamClient
HttpService:CreateWebStreamClient(
Parameter
Rückgaben
Code-Beispiele
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") -- Geht davon aus, dass Sie Ihren Gemini API-Schlüssel bereits als lokalen Geheimnis hochgeladen haben
local url_with_secret = geminiSecret:AddPrefix(URL_GEMINI_SSE) -- Denken Sie daran, dass Plugins keinen Zugriff auf lokale Geheimnisse haben!
local function handleOpen(responseStatusCode, headers)
print("Stream geöffnet mit Antwortcode:", responseStatusCode)
end
local function handleMessage(message)
-- Ereignisse je nach Streamtyp analysieren
print("Streamnachricht empfangen:", message)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
Url = url_with_secret,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Beim Senden von JSON, setzen Sie dies!
},
Body = HttpService:JSONEncode({ contents = { parts = { text ="Wie funktioniert das SSE-Protokoll?" }}}),
})
local openConnection = sse_client.Opened:Connect(handleOpen)
local messageConnection = sse_client.MessageReceived:Connect(handleMessage)
sse_client.Closed:Wait()
openConnection:Disconnect()
messageConnection:Disconnect()
end
-- Denken Sie daran, die Funktion in einen 'pcall' zu wickeln, um zu verhindern, dass das Skript abstürzt, wenn die Anfrage fehlschlägt
local success, message = pcall(request)
if not success then
print("WebStreamClient fehlgeschlagen:", message)
endHttpService CreateWebStreamClient RawStream
local HttpService = game:GetService("HttpService")
local LOCAL_LLM_PORT = "http://localhost:11434/api/generate?stream=true"
local function handleMessage(message)
-- Veranstaltungen je nach Stream-Typ analysieren
-- Wenn der Content-Type-Header der Antwort JSON ist, können Sie es so dekodieren:
local json = HttpService:JSONDecode(message)
end
local function handleError(responseStatusCode, errorMessage)
print("Stream-Fehler mit Antwortcode:", responseStatusCode)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
-- Llama3.2 LLM-Server läuft lokal mit Ollama
Url = LOCAL_LLM_PORT,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Beim Senden von JSON, setzen Sie dies!
},
Body = HttpService:JSONEncode({ model="llama3.2", prompt ="Erzähl mir einen lustigen Witz"}),
})
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
-- Denken Sie daran, die Funktion in einen 'pcall' zu wickeln, um zu verhindern, dass das Skript bricht, wenn die Anfrage fehlschlägt
local success, message = pcall(request)
if not success then
print("WebStreamClient fehlgeschlagen:", message)
endGenerateGUID
Parameter
| Standardwert: true |
Rückgaben
Code-Beispiele
HttpService GenerateGUID
local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Beispielausgabe: {4c50eba2-d2ed-4d79-bec1-02a967f49c58}GetAsync
Parameter
url:Variant |
| Standardwert: false |
headers:Variant |
Rückgaben
Code-Beispiele
Astronauten im Weltraum
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Mache die Anfrage an unsere Endpunkt-URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Analysiere die JSON-Antwort
local data = HttpService:JSONDecode(response)
-- Informationen in der Datentabelle hängen von der Antwort-JSON ab
if data.message == "success" then
print("Derzeit befinden sich " .. data.number .. " Astronauten im Weltraum:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " ist auf " .. person.craft)
end
endWo ist die Internationale Raumstation?
local HttpService = game:GetService("HttpService")
-- Wo ist die Internationale Raumstation gerade?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Verwenden Sie pcall, falls etwas schiefgeht
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Ist unsere Anfrage fehlgeschlagen oder unser JSON konnte nicht geparst werden?
if not data then
return false
end
-- Überprüfen Sie unsere Daten vollständig auf Gültigkeit. Dies hängt davon ab, an
-- welchen Endpunkt Sie Ihre Anfragen senden. Für dieses Beispiel ist dieser Endpunkt
-- hier beschrieben: 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("Die Internationale Raumstation befindet sich momentan hier:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Erfolg")
else
print("Etwas ist schiefgelaufen")
endJSONDecode
Parameter
Rückgaben
Variant
Code-Beispiele
HttpService JSONDecodieren
local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "Erfolg",
"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 == "Erfolg" then
-- Da tab["hello"] und tab.hello gleichwertig sind,
-- kannst du hier auch data["info"]["points"] verwenden:
print("Ich habe " .. data.info.points .. " Punkte")
if data.info.isLeader then
print("Ich bin der Anführer")
end
print("Ich habe " .. #data.info.past_scores .. " vergangene Ergebnisse")
print("Alle Informationen:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
endJSONEncode
Parameter
input:Variant |
Rückgaben
Code-Beispiele
HttpService JSONEncode
local HttpService = game:GetService("HttpService")
local tab = {
-- Denk daran: diese Zeilen sind gleichwertig
--["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
HttpService:PostAsync(
Parameter
url:Variant |
| Standardwert: "ApplicationJson" |
| Standardwert: false |
headers:Variant |
Rückgaben
Code-Beispiele
Neuer Pastebin-Post
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API-Entwicklerschlüssel von
-- https://pastebin.com/api#1
["api_dev_key"] = "FÜLLEN SIE DIESES FELD MIT IHREM API-ENTWICKLERSCHLÜSSEL",
["api_option"] = "paste", -- als "paste" beibehalten
["api_paste_name"] = "HttpService:PostAsync", -- Paste-Name
["api_paste_code"] = "Hallo, Welt", -- Paste-Inhalt
["api_paste_format"] = "text", -- Paste-Format
["api_paste_expire_date"] = "10M", -- Ablaufdatum
["api_paste_private"] = "0", -- 0=öffentlich, 1=nicht gelistet, 2=privat
["api_user_key"] = "", -- Benutzer-Schlüssel, wenn leer als Gast posten
}
-- Die Pastebin-API verwendet einen URL-kodierten String für die Postdaten
-- Andere APIs könnten JSON, XML oder ein anderes Format verwenden
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) -- Entfernen des ersten &
-- Hier sind die Daten, die wir senden
print(data)
-- Die Anfrage stellen
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Die Antwort wird die URL zum neuen Paste (oder eine Fehlermeldung, wenn etwas schiefgelaufen ist) sein
print(response)RequestAsync
Parameter
Rückgaben
Code-Beispiele
Senden einer HTTP-Anfrage
-- Denken Sie daran, HTTP-Anfragen in den Erlebnis-Einstellungen zu aktivieren!
local HttpService = game:GetService("HttpService")
local function request()
local response = HttpService:RequestAsync({
Url = "http://httpbin.org/post", -- Diese Website hilft, HTTP-Anfragen zu debuggen
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Wenn Sie JSON senden, setzen Sie dies!
},
Body = HttpService:JSONEncode({ hello = "world" }),
})
if response.Success then
print("Statuscode:", response.StatusCode, response.StatusMessage)
print("Antwortkörper:\n", response.Body)
else
print("Die Anfrage ist fehlgeschlagen:", response.StatusCode, response.StatusMessage)
end
end
-- Denken Sie daran, die Funktion in ein 'pcall' zu wickeln, um zu verhindern, dass das Skript abstürzt, wenn die Anfrage fehlschlägt
local success, message = pcall(request)
if not success then
print("HTTP-Anfrage fehlgeschlagen:", message)
endCloud über HttpService öffnen
-- Vergessen Sie nicht, HTTP-Anforderungen in den Einstellungen der Erfahrung zu aktivieren!
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}`, -- Aktualisiert die Gruppenmitgliedschaft eines Benutzers
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Beim Senden von JSON, dies setzen!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Im Creator Hub festgelegt
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("Die Antwort war erfolgreich:", response.StatusCode, response.StatusMessage)
else
print("Die Antwort gab einen Fehler zurück:", response.StatusCode, response.StatusMessage)
end
print("Antwortkörper:\n", response.Body)
print("Antwort-Header:\n", HttpService:JSONEncode(response.Headers))
end
-- Vergessen Sie nicht, die Funktion in ein 'pcall' zu wickeln, um zu verhindern, dass das Skript abstürzt, wenn die Anfrage fehlschlägt
local success, message = pcall(request)
if not success then
print("Die Http-Anforderung konnte nicht gesendet werden:", message)
endUrlEncode
Parameter
Rückgaben
Code-Beispiele
HttpService UrlEncode
local HttpService = game:GetService("HttpService")
local content = "Ich bin ins Kino gegangen." -- Französisch für "Ich bin ins Kino gegangen."
local result = HttpService:UrlEncode(content)
print(result) --> Je%20suis%20all%C3%A9%20au%20cinema%2ENeuer Pastebin-Post
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Pastebin API-Entwicklerschlüssel von
-- https://pastebin.com/api#1
["api_dev_key"] = "FÜLLEN SIE DIESES FELD MIT IHREM API-ENTWICKLERSCHLÜSSEL",
["api_option"] = "paste", -- als "paste" beibehalten
["api_paste_name"] = "HttpService:PostAsync", -- Paste-Name
["api_paste_code"] = "Hallo, Welt", -- Paste-Inhalt
["api_paste_format"] = "text", -- Paste-Format
["api_paste_expire_date"] = "10M", -- Ablaufdatum
["api_paste_private"] = "0", -- 0=öffentlich, 1=nicht gelistet, 2=privat
["api_user_key"] = "", -- Benutzer-Schlüssel, wenn leer als Gast posten
}
-- Die Pastebin-API verwendet einen URL-kodierten String für die Postdaten
-- Andere APIs könnten JSON, XML oder ein anderes Format verwenden
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) -- Entfernen des ersten &
-- Hier sind die Daten, die wir senden
print(data)
-- Die Anfrage stellen
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Die Antwort wird die URL zum neuen Paste (oder eine Fehlermeldung, wenn etwas schiefgelaufen ist) sein
print(response)