HttpService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
HttpService ermöglicht es, HTTP-Anfragen von Spielservern mit RequestAsync , GetAsync und PostAsync zu senden.Dieser Service ermöglicht es Spielen, mit Webdiensten von Roblox außerhalb von Roblox wie Analysen, Datenaufbewahrung, Remote-Serverkonfiguration, Fehlerberichterstattung, erweiterte Berechnungen oder Echtzeitkommunikation integriert zu werden.
HttpService beherbergt auch die Methoden JSONEncode und JSONDecode, die für die Kommunikation mit Diensten, die die JSON -Format verwenden, verwendet werden.Darüber hinaus bietet die Methode GenerateGUID zufällige 128-Bit-Etiketten, die in einer Vielzahl von Szenarien als zufällig einzigartig betrachtet werden können.
Du solltest nur HTTP-Anfragen an vertrauenswürdige Drittplattformen senden, um deine Erfahrung vor Sicherheitsrisiken zu schützen.
Diese Eigenschaft kann zur Laufzeit nicht interagiert werden.
HTTP-Anfragen aktivieren
Anforderungsversendende Methoden sind standardmäßig nicht aktiviert. Um Anfragen zu senden, musst du HTTP-Anfragen aktivieren für dein Erlebnis.
Verwenden in Plugins
HttpService kann von Studio-Plugins verwendet werden.Sie können dies tun, um nach Updates zu suchen, Nutzungsdaten zu senden, Inhalte herunterzuladen oder andere Geschäftslogik durchzuführen.Das erste Mal, wenn ein Plugin dies versucht, kann der Benutzer aufgefordert werden, dem Plugin die Berechtigung zu geben, mit der bestimmten Webadresse zu kommunizieren.Ein Benutzer kann solche Berechtigungen jederzeit durch das Plugin-Management -Fenster akzeptieren, ablehnen und widerrufen.
Plugins können auch mit anderen Software auf demselben Computer durch die localhost und 127.0.0.1 Hosts kommunizieren.Durch die Ausführung von Programmen, die mit solchen Plugins kompatibel sind, kannst du die Funktionalität deines Plugins über die normalen Fähigkeiten von Studio hinaus erweitern, z. B. die Interaktion mit dem Dateisystem deines Computers.Achte darauf, dass solche Software separat vom Plugin selbst verteilt werden muss und Gefahren für die Sicherheit darstellen kann, wenn du nicht vorsichtig bist.
Zusätzliche Überlegungen
- Es gibt Hafteinschränkungen.Du kannst den Port nicht verwenden 1194 oder einen Port unter 1024 , außer 80 und 443.Wenn du versuchst, einen blockierten Port zu verwenden, erhältst du entweder einen 403 Forbidden oder ERR_ACCESS_DENIED Fehler.
- Für jeden Servergibt es ein Limit von 500 HTTP-Anfragen pro Minute.Das Überschreiten kann dazu führen, dass Anforderungsversendemethoden für etwa 30 Sekunden vollständig ausfallen.
- Anfragen können nicht an eine Roblox-Website gerichtet werden, wie www.roblox.com.
- Webanfragen können aus vielen Gründen fehlschlagen, daher ist es wichtig, "defensiv zu codieren" (benutze pcall() ) und einen Plan für den Fall zu haben, dass Anfragen fehlschlagen.
- Obwohl das http://Protokoll unterstützt wird, solltest du https:// überall verwenden, wo es möglich ist.
- Senden von Anfragen sollte eine sichere Authentifizierungsform bieten, wie z. B. einen vorab geteilten geheimen Schlüssel, damit schlechte Akteure sich nicht als einer deiner Roblox-Spielserver ausgeben können.
- Seien Sie sich der allgemeinen Kapazitäts- und Auslastungspolitik der Webserver bewusst, an die Anfragen gesendet werden.
Code-Beispiele
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)
Zusammenfassung
Eigenschaften
Weist darauf hin, ob HTTP-Anfragen an externe Websites gesendet werden können.
Methoden
Erzeugt einen zufälligen String, optional mit klammern.
Gibt eine Secret aus dem Storezurück.
Dekodiert einen JSON-String in eine Luau-Tabelle.
Erstelle einen JSON-String aus einer Luau-Tabelle.
Ersetzt URL-unsichere Zeichen durch "%" und zwei hexadezimale Zeichen.
Sendet eine HTTP-Anfrage GET.
- PostAsync(url : Variant,data : string,content_type : Enum.HttpContentType,compress : boolean,headers : Variant):string
Sendet eine HTTP-Anfrage POST.
Sendet eine HTTP-Anfrage mit einer beliebigen HTTP-Methode, die ein Wörterbuch mit Informationen übermittelt.
Eigenschaften
HttpEnabled
Wenn auf true festgelegt, können Skripte Anfragen an Websites senden, die HttpService:GetAsync() , HttpService:PostAsync() und HttpService:RequestAsync() verwenden.
Diese Eigenschaft muss durch das Spiele-Einstellungen-Interface in Studio oder für unveröffentlichte Erlebnisse durch Festlegen dieser Eigenschaft auf true mit der Befehlsleiste verwendet werden:
game:GetService("HttpService").HttpEnabled = true
Methoden
GenerateGUID
Diese Methode erzeugt einen zufälligen universell einzigartigen Identifikator (UUID).Die sechzehn Bytes eines UUID werden als 32 hexadezimale (Basis 16) Zahlen dargestellt, die in fünf Gruppen mit Leerstellen getrennt in der Form 8-4-4-4-12 für insgesamt 36 Zeichen angezeigt werden, zum Beispiel 123e4567-e89b-12d3-a456-426655440000 .
Die verwendete UUID-Spezifikation ist Version 4 (zufällig), Variante 1 (DCE 1.1, ISO/IEC 11578:1996).UUIDs dieser Version werden wegen ihrer Einfachheit am häufigsten verwendet, da sie vollständig zufällig generiert werden.Beachten Sie, dass diese Version nicht bestimmte Funktionen hat, die andere UUID-Versionen haben, wie z. B. verschlüsselte Zeitmarken, MAC-Adressen oder zeitbasierte Sortierung wie UUIDv7 oder ULID.
Es gibt über 5.3×10 36 einzigartige v4 UUIDs, in denen die Wahrscheinlichkeit, innerhalb von 103 Trillionen UUIDs eine Duplikation zu finden, eine von einer Milliarde ist.
Das wrapInCurlyBraces Argument bestimmt, ob die zurückgegebene Zeichenkette in runden Klammern ( {} ) eingeschlossen ist. Zum Instanz:
- true : {94b717b2-d54f-4340-a504-bd809ef5bf5c}
- false : db454790-7563-44ed-ab4b-397ff5df737b
Parameter
Ob die zurückgegebene Zeichenkette in runden Klammern ( {} ) eingeschlossen werden sollte.
Rückgaben
Die zufällig generierte UUID.
Code-Beispiele
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
Diese Methode gibt einen Wert zurück, der zuvor dem Geheimnisspeicher für das Erlebnis hinzugefügt wurde.Der geheime Inhalt ist nicht druckbar und nicht verfügbar, wenn die Erfahrung lokal ausgeführt wird.
Die zurückgegebene Secret kann mit eingebauten Methoden wie Secret:AddPrefix() transformiert werden. Es wird erwartet, dass sie als Teil einer HTTP-Anfrage gesendet wird.
Für weitere Informationen, siehe den Verwendungsleitfaden.
Parameter
Rückgaben
JSONDecode
Diese Methode transformiert ein JSON-Objekt oder -Array in eine Luau-Tabelle mit den folgenden Merkmalen:
- Schlüssel der Tabelle sind Zeichenketten oder Zahlen, aber nicht beides. Wenn ein JSON-Objekt beides enthält, werden Zeichenschlüssel ignoriert.
- Ein leeres JSON-Objekt erzeugt eine leere Luau-Tabelle ( {} ).
- Wenn der input Saitz nicht ein gültiges JSON-Objekt ist, wird diese Methode einen Fehler werfen.
Um einen Luau-Tisch in ein JSON-Objekt zu codieren, verwende die HttpService:JSONEncode()-Methode.
Diese Methode kann unabhängig davon verwendet werden, ob HTTP-Anfragen aktiviert sind.
Parameter
Das JSON-Objekt wird dekodiert.
Rückgaben
Das dekodierte JSON-Objekt als Luau-Tabelle.
Code-Beispiele
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
Diese Methode transformiert eine Luau-Tabelle in ein JSON-Objekt oder -Array auf der Grundlage der folgenden Richtlinien:
Die Schlüssel der Tabelle müssen entweder Zeichenketten oder Zahlen sein. Wenn eine Tabelle beides enthält, wird ein Array bevorzugt (Schlüsselzeichen werden ignoriert).
Ein leerer Luau-Tisch ( {} ) erzeugt eine leere Array.
Der Wert nil wird nie generiert.
Zyklische Tabellenbezüge verursachen einen Fehler.
Diese Methode erlaubt Werte wie inf und nan, die keine gültigen JSON sind.Dies kann Probleme verursachen, wenn du das ausgegebene JSON anderswo verwenden möchtest.
Um den Verschlüsselungsprozess umzukehren und ein JSON-Objekt zu dekodieren, verwende die HttpService:JSONDecode()-Methode.
Diese Methode kann unabhängig davon verwendet werden, ob HTTP-Anfragen aktiviert sind.
Parameter
Der Eingabentisch Luau.
Rückgaben
Der zurückgegebene JSON-String.
Code-Beispiele
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
Diese Methode prozentcodiert einen bestimmten String, so dass reservierte Zeichen ordnungsgemäß mit % und zwei hexadezimalen Zeichen kodiert werden.
Dies ist nützlich, wenn URLs für die Verwendung mit HttpService:GetAsync() / HttpService:PostAsync() oder POST Daten des Medientyps application/x-www-form-urlencoded ( Enum.HttpContentType.ApplicationUrlEncoded ) formatiert werden.
Zum Instanz, wenn du die URL https://www.roblox.com/discover#/ codierst, gibt diese Methode https%3A%2F%2Fwww%2Eroblox%2Ecom%2Fdiscover%23%2F zurück.
Parameter
Die Zeichenkette (URL), um zu verschlüsseln.
Rückgaben
Der verschlüsselte String.
Code-Beispiele
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
Diese Methode sendet eine HTTP-Anfrage GET.Es funktioniert ähnlich wie RequestAsync() außer dass es HTTP-Anfrage参数 als Methode参数 anstelle einer einzigen Diktion akzeptiert und nur den Körper der HTTP-Antwort zurückgibt.Im Allgemeinen ist diese Methode nur als Kurzform nützlich und RequestAsync() sollte in den meisten Fällen verwendet werden.
Wenn true , verhindert der nocache -Parameter, dass diese Methode Ergebnisse aus früheren Aufrufen mit demselben url speichert.
Parameter
Die Webadresse, von der du Daten anfordern.
Ob die Anfrage (Speicher) die Antwort speichert.
Wird verwendet, um einige HTTP-Anforderungsköpfe zu spezifizieren.
Rückgaben
Der Körperder Anfrage.
Code-Beispiele
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
Diese Methode sendet eine HTTP-Anfrage POST.Es funktioniert ähnlich wie RequestAsync() außer dass es HTTP-Anfrage参数 als Methode参数 anstelle einer einzigen Diktion akzeptiert und nur den Körper der HTTP-Antwort zurückgibt.Im Allgemeinen ist diese Methode nur als Kurzform nützlich und RequestAsync() sollte in den meisten Fällen verwendet werden.
Wenn true , steuert der compress -Parameter, ob große Anforderungskörper mit gzip komprimiert werden.
Parameter
Die Zieladresse für die Daten.
Die gesendeten Daten.
Modifiziert den Wert im Content-Type-Header, der mit der Anfrage gesendet wird.
Bestimmt, ob die Daten beim Versenden komprimiert sind ( zippiert ) oder nicht.
Wird verwendet, um einige HTTP-Anforderungsköpfe zu spezifizieren.
Rückgaben
Die HTTP-Antwort, die zurückgesendet wird und das Ergebnis der Anfrage anzeigt.
Code-Beispiele
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
Diese Methode sendet eine HTTP-Anfrage mit einem Wörterbuch, um die Anforderungsdaten wie die Ziel-URL, die Methode, die Kopfzeilen und die Körperdaten der Anforderung anzugeben.Es gibt eine Rückgabe eines Wörterbuchs, das die empfangenen Antwortdaten beschreibt.Optional kann die Anfrage mit Enum.HttpCompression komprimiert werden.
Wörterbuchfelder anfordern
<th>Typ</th><th>Erforderlich</th><th>Beschreibung</th></tr></thead><tbody><tr><td><code>Urlaub</code></td><td>Schnur</td><td>nein</td><td>Die Ziel-URL für diese Anfrage. Muss <code>http</code> oder <code>https</code> Protokolle verwenden.</td></tr><tr><td><code>Methode</code></td><td>Schnur</td><td>no</td><td>Die HTTP-Methode, die von dieser Anfrage verwendet wird, meistens <code>GET</code> oder <code>POST</code>.</td></tr><tr><td><code>Kopfzeilen</code></td><td>Wörterbuch</td><td>no</td><td>Ein Wörterbuch von Headern, die mit dieser Anfrage verwendet werden. Die meisten HTTP-Header werden hier akzeptiert, aber nicht Alle.</td></tr><tr><td><code>Körper</code></td><td>Schnur</td><td>no</td><td>Der Körper.Kann jede Stringsein, einschließlich binärer Daten.Muss beim Verwenden der <code>GET</code>- oder <code>HEAD</code>-HTTP-Methoden ausgeschlossen werden.Es kann notwendig sein, den <code>Inhaltstyp</code>-Header anzugeben, wenn JSON oder andere Formate gesendet werden.</td></tr><tr><td><code>Komprimieren</code></td><td><code>Enum.HttpCompression</code></td><td>no</td><td>Ein optionales Komprimierungsfeld, das die Daten in der Anfrage komprimiert.Der Wert kann entweder <code>Enum.HttpCompression.None</code> oder <code>Enum.HttpCompression.Gzip</code> sein.</td></tr></tbody>
Namen |
---|
Unterstützte HTTP-Methoden
Die HTTP-Anforderungs Methoden geben den Zweck der Anforderung an und was erwartet wird, wenn die Anforderung erfolgreich ist.Die GET-Anforderungsmethode zum Instanzsagt dem Server an der angeforderten Adresse, dass eine Ressource angefordert wird, und wenn sie erfolgreich ist, wird die Ressource an dieser Adresse zurückgegeben.Ebenso macht die HEAD Anforderungs-Methode dasselbe, außer der Server weiß, eine Antwort ohne Body Element zurückzugeben.
<th>Beschreibung</th><th>Sicher</th></tr></thead><tbody><tr><td><code>ERHALTEN</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/GET">ⓘ</a></td><td>Die <code>GET</code>-Methode fordert die Ressource an der angegebenen Adresse an. Unterstützt nicht die Verwendung des <code>Körper</code>- Parameters.</td><td>Nein</td></tr><tr><td><code>KOPF</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/HEAD">ⓘ</a></td><td>Die <code>HEAD</code>-Methode fordert eine Antwort, die identisch zu einer <code>GET</code>-Anfrage ist, aber ohne Antwortkörper.Unterstützt nicht die Verwendung des <code>Körper</code>- Parameters.</td><td>Nein</td></tr><tr><td><code>POSTEN</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/POST">ⓘ</a></td><td>Die <code>POST</code>-Methode sendet die angegebenen <code>Körper</code>-Daten an die angeforderte Adresse.</td><td>No</td></tr><tr><td><code>PUT</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PUT">ⓘ</a></td><td>Die <code>PUT</code>-Methode ersetzt alle aktuellen Iterationen der angegebenen Ressource innerhalb der bereitgestellten <code>Körper</code>-Daten.</td><td>No</td></tr><tr><td><code>LÖSCHEN</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/DELETE">ⓘ</a></td><td>Die <code>LÖSCHEN</code>-Methode löscht die angegebene Ressource in den angegebenen <code>Körper</code>-Daten an der angeforderten Adresse.</td><td>No</td></tr><tr><td><code>OPTIONEN</code> <a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/OPTIONS">ⓘ</a></td><td>Die <code>OPTIONEN</code>-Methode fordert die zulässigen Kommunikationsoptionen für die angegebene Adresse an.</td><td>Nein</td></tr><tr><td><code>TRACE</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/TRACE">ⓘ</a></td><td>Die Methode <code>TRACE</code> führt einen Nachrichten-Loop-Back-Test entlang des Weges zur angegebenen Ressource durch, die in den bereitgestellten <code>Körper</code>-Daten angegeben ist.</td><td>Nein</td></tr><tr><td><code>PATCH</code><a href="https://developer.mozilla.org/docs/Web/HTTP/Methods/PATCH">ⓘ</a></td><td>Die <code>PATCH</code>-Methode wendet teilweise Änderungen an die angegebene Ressource an, die in den mitgelieferten <code>Körper</code>-Daten an der angeforderten Adresse angegeben ist.</td><td>No</td></tr></tbody>
Methode |
---|
HTTP-Header
Im Anforderungsdiktion können Sie benutzerdefinierte HTTP-Header spezifizieren, die für die Anfrage verwendet werden.Einige Kopfzeilen können jedoch nicht angegeben werden.Zum Beispiel wird Content-Length aus dem Request-Körper bestimmt.User-Agent und Roblox-Id sind von Roblox gesperrt.Andere Überschriften wie Accept oder Cache-Control verwenden Standardwerte, können aber überschrieben werden.Häufiger können einige REST-APIs API-Schlüssel oder andere Service-Authentifizierung in Anfrage-Header angegeben werden müssen.
Die Methode RequestAsync() erkennt das Format des Körperinhalts nicht.Viele Webserver erfordern, dass der Content-Type Kopfzeile beim Versenden bestimmter Formate angemessen gesetzt wird, wenn bestimmte Formate gesendet werden.Andere Methoden von verwenden die Enum; für diese Methode legen Sie den Kopfzeilen entsprechend fest: , , , oder sind Ersetzungskopfzeilen für die jeweiligen Enum-Werte.
Antwort-Wörterbuch-Felder
RequestAsync() gibt eine diktion zurück, die die folgenden felder enthält:
<th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td><code>Erfolg</code></td><td>Boolesisch</td><td>Der Erfolgstatus der Anfrage. Dies ist wahr, wenn und nur wenn der <code>Statuscode</code> innerhalb des Bereichs <code>200</code> - <code>299</code> liegt.</td></tr><tr><td><code>Zustandscode</code></td><td>Zahlwort</td><td>Der HTTP-Antwortcode, der den Status der Antwort identifiziert.</td></tr><tr><td><code>Statusnachricht</code></td><td>Schnur</td><td>Die Statusnachricht, die Zurückwurde.</td></tr><tr><td><code>Kopfzeilen</code></td><td>Wörterbuch</td><td>Ein Wörterbuch von Headern, die in dieser Antwort festgelegt wurden.</td></tr><tr><td><code>Körper</code></td><td /><td>Der Anforderungskörper (Inhalt) in der Antwort empfangen.</td></tr></tbody>
Namen |
---|
Fehlerfälle
RequestAsync() erzeugt einen Fehler, wenn die Antwort abläuft oder der Zielserver die Anfrage ablehnt.Wenn ein Webservice aus irgendeinem Grund heruntergefahren wird, kann dies dazu führen, dass Skripte, die diese Methode verwenden, ganz aufhören zu funktionieren.Es ist oft eine gute Idee, Anrufe an diese Methode in pcall() zu wickeln und fehlerhafte Fälle elegant zu behandeln, wenn die erforderlichen Informationen nicht verfügbar sind.
Beschränkungen
Die derzeitige Einschränkung für das Senden und Empfangen von HTTP-Anfragen beträgt 500 Anfragen pro Minute.Anfragen über diesem Schwellenwert werden fehlschlagen.Zusätzlich werden Roblox-Domänen ausgeschlossen.Das bedeutet, dass HTTP-Anfragen nicht an eine von Roblox betriebene Website wie www.roblox.com gesendet werden können.
Parameter
Ein Wörterbuch mit Informationen, die vom angegebenen Server abgerufen werden sollen.
Rückgaben
Ein Wörterbuch mit Antwortinformationen vom angegebenen Server.
Code-Beispiele
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