HttpService

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst

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).

Astronauts in Space

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

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

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

Where is the International Space Station?

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

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

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

New Pastebin Post

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

Zusammenfassung

Eigenschaften

  • Lokale Nutzersicherheit
    Parallel lesen

    Weist darauf hin, ob HTTP-Anfragen an externe Websites gesendet werden können.

Methoden

Eigenschaften

HttpEnabled

Lokale Nutzersicherheit
Parallel lesen

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

Parallel schreiben

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

wrapInCurlyBraces: boolean

Ob die zurückgegebene Zeichenkette in runden Klammern ( {} ) eingeschlossen werden sollte.

Standardwert: true

Rückgaben

Die zufällig generierte UUID.

Code-Beispiele

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

HttpService GenerateGUID

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

GetSecret

Parallel schreiben

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

key: string
Standardwert: ""

Rückgaben

JSONDecode

Variant
Parallel schreiben

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

input: string

Das JSON-Objekt wird dekodiert.

Standardwert: ""

Rückgaben

Variant

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).

HttpService JSONDecode

local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "success",
"info": {
"points": 120,
"isLeader": true,
"user": {
"id": 12345,
"name": "JohnDoe"
},
"past_scores": [50, 42, 95],
"best_friend": null
}
}
]]
local data = HttpService:JSONDecode(jsonString)
if data.message == "success" then
-- Since tab["hello"] and tab.hello are equivalent,
-- you could also use data["info"]["points"] here:
print("I have " .. data.info.points .. " points")
if data.info.isLeader then
print("I am the leader")
end
print("I have " .. #data.info.past_scores .. " past scores")
print("All the information:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
end

JSONEncode

Parallel schreiben

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

input: Variant

Der Eingabentisch Luau.

Standardwert: ""

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.

HttpService JSONEncode

local HttpService = game:GetService("HttpService")
local tab = {
-- Remember: these lines are equivalent
--["message"] = "success",
message = "success",
info = {
points = 123,
isLeader = true,
user = {
id = 12345,
name = "JohnDoe",
},
past_scores = { 50, 42, 95 },
best_friend = nil,
},
}
local json = HttpService:JSONEncode(tab)
print(json)

UrlEncode

Parallel schreiben

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

input: string

Die Zeichenkette (URL), um zu verschlüsseln.

Standardwert: ""

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).

HttpService UrlEncode

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

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

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

New Pastebin Post

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

GetAsync

Angehalten

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

url: Variant

Die Webadresse, von der du Daten anfordern.

Standardwert: ""
nocache: boolean

Ob die Anfrage (Speicher) die Antwort speichert.

Standardwert: false
headers: Variant

Wird verwendet, um einige HTTP-Anforderungsköpfe zu spezifizieren.

Standardwert: ""

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).

Astronauts in Space

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

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

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

Where is the International Space Station?

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

PostAsync

Angehalten

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

url: Variant

Die Zieladresse für die Daten.

Standardwert: ""
data: string

Die gesendeten Daten.

Standardwert: ""
content_type: Enum.HttpContentType

Modifiziert den Wert im Content-Type-Header, der mit der Anfrage gesendet wird.

Standardwert: "ApplicationJson"
compress: boolean

Bestimmt, ob die Daten beim Versenden komprimiert sind ( zippiert ) oder nicht.

Standardwert: false
headers: Variant

Wird verwendet, um einige HTTP-Anforderungsköpfe zu spezifizieren.

Standardwert: ""

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).

New Pastebin Post

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

RequestAsync

Angehalten

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

requestOptions: Dictionary

Ein Wörterbuch mit Informationen, die vom angegebenen Server abgerufen werden sollen.

Standardwert: ""

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.

Sending an HTTP Request

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

Ereignisse