Klasa silnika
HttpService
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Podsumowanie
Właściwości
Metody
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 |
Przykłady kodu
Astronauci w Kosmosie
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Wyślij zapytanie do naszego punktu końcowego URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Analizuj odpowiedź JSON
local data = HttpService:JSONDecode(response)
-- Informacje w tabeli danych zależą od odpowiedzi JSON
if data.message == "success" then
print("Aktualnie jest " .. data.number .. " astronautów w kosmosie:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " jest na " .. person.craft)
end
endGdzie jest Międzynarodowa Stacja Kosmiczna?
local HttpService = game:GetService("HttpService")
-- Gdzie jest teraz Międzynarodowa Stacja Kosmiczna?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Użyj pcall, na wypadek gdyby coś poszło nie tak
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Czy nasze zapytanie się nie powiodło, czy nasz JSON nie mógł zostać sparsowany?
if not data then
return false
end
-- Dokładnie sprawdź nasze dane pod kątem ważności. To zależy od punktu końcowego, do którego
-- wysyłasz swoje zapytania. W tym przykładzie ten punkt końcowy jest
-- opisany tutaj: 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("Międzynarodowa Stacja Kosmiczna znajduje się obecnie w:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Sukces")
else
print("Coś poszło nie tak")
endNowy post na Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Klucz dewelopera API pastebina z
-- https://pastebin.com/api#1
["api_dev_key"] = "WYPEŁNIJ TO SWOIM KLUCZEM DEWELOPERA API",
["api_option"] = "paste", -- zachowaj jako "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nazwa wpisu
["api_paste_code"] = "Witaj, świecie", -- zawartość wpisu
["api_paste_format"] = "text", -- format wpisu
["api_paste_expire_date"] = "10M", -- data wygaśnięcia
["api_paste_private"] = "0", -- 0=publiczny, 1=niewidoczny, 2=prywatny
["api_user_key"] = "", -- klucz użytkownika, jeśli pusty, wpisz jako gość
}
-- API pastebina używa ciągu zakodowanego w URL jako danych postu
-- Inne API mogą używać JSON, XML lub innego formatu
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) -- Usuń pierwsze &
-- Oto dane, które wysyłamy
print(data)
-- Wykonaj żądanie
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Odpowiedź będzie zawierać URL do nowego wpisu (lub ciąg błędu, jeśli coś poszło nie tak)
print(response)Otwórz Cloud za pomocą HttpService
-- Pamiętaj, aby włączyć żądania HTTP w ustawieniach doświadczenia!
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}`, -- Aktualizuje członkostwo użytkownika w grupie
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Przy wysyłaniu JSON, ustaw to!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Ustawione w Creator Hub
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("Odpowiedź była pomyślna:", response.StatusCode, response.StatusMessage)
else
print("Odpowiedź zwróciła błąd:", response.StatusCode, response.StatusMessage)
end
print("Treść odpowiedzi:\n", response.Body)
print("Nagłówki odpowiedzi:\n", HttpService:JSONEncode(response.Headers))
end
-- Pamiętaj, aby opakować funkcję w 'pcall', aby zapobiec awarii skryptu, jeśli żądanie się nie powiedzie
local success, message = pcall(request)
if not success then
print("Wysłanie żądania Http nie powiodło się:", message)
endMateriały referencyjne dotyczące interfejsów API
Właściwości
Metody
CreateWebStreamClient
HttpService:CreateWebStreamClient(
Parametry
Zwroty
Przykłady kodu
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") -- Zakłada, że już przesłałeś swój klucz API Gemini jako lokalny sekret
local url_with_secret = geminiSecret:AddPrefix(URL_GEMINI_SSE) -- Pamiętaj, że wtyczki nie mogą uzyskać dostępu do lokalnych sekretów!
local function handleOpen(responseStatusCode, headers)
print("Strumień otwarty z kodem odpowiedzi:", responseStatusCode)
end
local function handleMessage(message)
-- Parsuj wydarzenia w zależności od typu strumienia
print("Odebrana wiadomość strumienia:", message)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
Url = url_with_secret,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Przy wysyłaniu JSON, ustaw to!
},
Body = HttpService:JSONEncode({ contents = { parts = { text ="Jak działa protokół SSE?" }}}),
})
local openConnection = sse_client.Opened:Connect(handleOpen)
local messageConnection = sse_client.MessageReceived:Connect(handleMessage)
sse_client.Closed:Wait()
openConnection:Disconnect()
messageConnection:Disconnect()
end
-- Pamiętaj, aby owinąć funkcję w 'pcall', aby zapobiec awarii skryptu, jeśli żądanie się nie powiedzie
local success, message = pcall(request)
if not success then
print("WebStreamClient nie powiódł się:", message)
endHttpService CreateWebStreamClient RawStream
local HttpService = game:GetService("HttpService")
local LOCAL_LLM_PORT = "http://localhost:11434/api/generate?stream=true"
local function handleMessage(message)
-- Parsuj zdarzenia w zależności od typu strumienia
-- Jeśli nagłówek Content-Type odpowiedzi jest JSON, możesz go zdekodować w ten sposób:
local json = HttpService:JSONDecode(message)
end
local function handleError(responseStatusCode, errorMessage)
print("Błąd strumienia z kodem odpowiedzi:", responseStatusCode)
end
local function request()
local sse_client = HttpService:CreateWebStreamClient(Enum.WebStreamClientType.RawStream, {
-- Serwer Llama3.2 LLM działający lokalnie przy użyciu Ollama
Url = LOCAL_LLM_PORT,
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Podczas wysyłania JSON, ustaw to!
},
Body = HttpService:JSONEncode({ model="llama3.2", prompt ="Opowiedz mi śmieszny dowcip"}),
})
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
-- Pamiętaj, aby owinąć funkcję w 'pcall', aby zapobiec przerwaniu skryptu, jeśli zapytanie się nie powiedzie
local success, message = pcall(request)
if not success then
print("WebStreamClient nie powiódł się:", message)
endGenerateGUID
Parametry
| Wartość domyślna: true |
Zwroty
Przykłady kodu
HttpService GenerateGUID
local HttpService = game:GetService("HttpService")
local result = HttpService:GenerateGUID(true)
print(result) --> Przykładowe wyjście: {4c50eba2-d2ed-4d79-bec1-02a967f49c58}GetAsync
Parametry
url:Variant |
| Wartość domyślna: false |
headers:Variant |
Zwroty
Przykłady kodu
Astronauci w Kosmosie
local HttpService = game:GetService("HttpService")
local URL_ASTROS = "http://api.open-notify.org/astros.json"
-- Wyślij zapytanie do naszego punktu końcowego URL
local response = HttpService:GetAsync(URL_ASTROS)
-- Analizuj odpowiedź JSON
local data = HttpService:JSONDecode(response)
-- Informacje w tabeli danych zależą od odpowiedzi JSON
if data.message == "success" then
print("Aktualnie jest " .. data.number .. " astronautów w kosmosie:")
for i, person in pairs(data.people) do
print(i .. ": " .. person.name .. " jest na " .. person.craft)
end
endGdzie jest Międzynarodowa Stacja Kosmiczna?
local HttpService = game:GetService("HttpService")
-- Gdzie jest teraz Międzynarodowa Stacja Kosmiczna?
local URL_ISS = "http://api.open-notify.org/iss-now.json"
local function printISS()
local response
local data
-- Użyj pcall, na wypadek gdyby coś poszło nie tak
pcall(function()
response = HttpService:GetAsync(URL_ISS)
data = HttpService:JSONDecode(response)
end)
-- Czy nasze zapytanie się nie powiodło, czy nasz JSON nie mógł zostać sparsowany?
if not data then
return false
end
-- Dokładnie sprawdź nasze dane pod kątem ważności. To zależy od punktu końcowego, do którego
-- wysyłasz swoje zapytania. W tym przykładzie ten punkt końcowy jest
-- opisany tutaj: 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("Międzynarodowa Stacja Kosmiczna znajduje się obecnie w:")
print(data.iss_position.latitude .. ", " .. data.iss_position.longitude)
return true
end
end
return false
end
if printISS() then
print("Sukces")
else
print("Coś poszło nie tak")
endJSONDecode
Parametry
Zwroty
Variant
Przykłady kodu
HttpService JSONDecode
local HttpService = game:GetService("HttpService")
local jsonString = [[
{
"message": "sukces",
"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 == "sukces" then
-- Ponieważ tab["hello"] i tab.hello są równoważne,
-- możesz także użyć data["info"]["points"] tutaj:
print("Mam " .. data.info.points .. " punkty")
if data.info.isLeader then
print("Jestem liderem")
end
print("Mam " .. #data.info.past_scores .. " wcześniejszych wyników")
print("Wszystkie informacje:")
for key, value in pairs(data.info) do
print(key, typeof(value), value)
end
endJSONEncode
Parametry
input:Variant |
Zwroty
Przykłady kodu
HttpService JSONEncode
local HttpService = game:GetService("HttpService")
local tab = {
-- Pamiętaj: te linie są równoważne
--["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(
Parametry
url:Variant |
| Wartość domyślna: "ApplicationJson" |
| Wartość domyślna: false |
headers:Variant |
Zwroty
Przykłady kodu
Nowy post na Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Klucz dewelopera API pastebina z
-- https://pastebin.com/api#1
["api_dev_key"] = "WYPEŁNIJ TO SWOIM KLUCZEM DEWELOPERA API",
["api_option"] = "paste", -- zachowaj jako "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nazwa wpisu
["api_paste_code"] = "Witaj, świecie", -- zawartość wpisu
["api_paste_format"] = "text", -- format wpisu
["api_paste_expire_date"] = "10M", -- data wygaśnięcia
["api_paste_private"] = "0", -- 0=publiczny, 1=niewidoczny, 2=prywatny
["api_user_key"] = "", -- klucz użytkownika, jeśli pusty, wpisz jako gość
}
-- API pastebina używa ciągu zakodowanego w URL jako danych postu
-- Inne API mogą używać JSON, XML lub innego formatu
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) -- Usuń pierwsze &
-- Oto dane, które wysyłamy
print(data)
-- Wykonaj żądanie
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Odpowiedź będzie zawierać URL do nowego wpisu (lub ciąg błędu, jeśli coś poszło nie tak)
print(response)RequestAsync
Parametry
Zwroty
Przykłady kodu
Wysyłanie żądania HTTP
-- Pamiętaj, aby włączyć żądania HTTP w ustawieniach doświadczenia!
local HttpService = game:GetService("HttpService")
local function request()
local response = HttpService:RequestAsync({
Url = "http://httpbin.org/post", -- Ta strona pomaga debugować żądania HTTP
Method = "POST",
Headers = {
["Content-Type"] = "application/json", -- Przy wysyłaniu JSON ustaw to!
},
Body = HttpService:JSONEncode({ hello = "world" }),
})
if response.Success then
print("Kod statusu:", response.StatusCode, response.StatusMessage)
print("Treść odpowiedzi:\n", response.Body)
else
print("Żądanie nie powiodło się:", response.StatusCode, response.StatusMessage)
end
end
-- Pamiętaj, aby owinąć funkcję w 'pcall', aby zapobiec awarii skryptu, jeśli żądanie się nie powiedzie
local success, message = pcall(request)
if not success then
print("Żądanie HTTP nie powiodło się:", message)
endOtwórz Cloud za pomocą HttpService
-- Pamiętaj, aby włączyć żądania HTTP w ustawieniach doświadczenia!
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}`, -- Aktualizuje członkostwo użytkownika w grupie
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- Przy wysyłaniu JSON, ustaw to!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Ustawione w Creator Hub
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("Odpowiedź była pomyślna:", response.StatusCode, response.StatusMessage)
else
print("Odpowiedź zwróciła błąd:", response.StatusCode, response.StatusMessage)
end
print("Treść odpowiedzi:\n", response.Body)
print("Nagłówki odpowiedzi:\n", HttpService:JSONEncode(response.Headers))
end
-- Pamiętaj, aby opakować funkcję w 'pcall', aby zapobiec awarii skryptu, jeśli żądanie się nie powiedzie
local success, message = pcall(request)
if not success then
print("Wysłanie żądania Http nie powiodło się:", message)
endUrlEncode
Parametry
Zwroty
Przykłady kodu
Kodowanie Url HttpService
local HttpService = game:GetService("HttpService")
local content = "Je suis allé au cinéma." -- Francuski na "Poszedłem do kina"
local result = HttpService:UrlEncode(content)
print(result) --> Je%20suis%20all%C3%A9%20au%20cinema%2ENowy post na Pastebin
local HttpService = game:GetService("HttpService")
local URL_PASTEBIN_NEW_PASTE = "https://pastebin.com/api/api_post.php"
local dataFields = {
-- Klucz dewelopera API pastebina z
-- https://pastebin.com/api#1
["api_dev_key"] = "WYPEŁNIJ TO SWOIM KLUCZEM DEWELOPERA API",
["api_option"] = "paste", -- zachowaj jako "paste"
["api_paste_name"] = "HttpService:PostAsync", -- nazwa wpisu
["api_paste_code"] = "Witaj, świecie", -- zawartość wpisu
["api_paste_format"] = "text", -- format wpisu
["api_paste_expire_date"] = "10M", -- data wygaśnięcia
["api_paste_private"] = "0", -- 0=publiczny, 1=niewidoczny, 2=prywatny
["api_user_key"] = "", -- klucz użytkownika, jeśli pusty, wpisz jako gość
}
-- API pastebina używa ciągu zakodowanego w URL jako danych postu
-- Inne API mogą używać JSON, XML lub innego formatu
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) -- Usuń pierwsze &
-- Oto dane, które wysyłamy
print(data)
-- Wykonaj żądanie
local response = HttpService:PostAsync(URL_PASTEBIN_NEW_PASTE, data, Enum.HttpContentType.ApplicationUrlEncoded, false)
-- Odpowiedź będzie zawierać URL do nowego wpisu (lub ciąg błędu, jeśli coś poszło nie tak)
print(response)