2015-09-23 3 views
1

Обратите внимание, что это версия Lua от Roblox. Я хочу загрузить таблицу в Pastebin. Вот что я имею в Пастбине.Lua - Загрузка в Pastebin

h = game:GetService'HttpService' 
JSON = h:JSONEncode(ImgScript) --ImgScript is a table formatted like {{x,y,z}, {x,y,z}, {x,y,z}, etc.} 
h:PostAsync('http://pastebin.com/api/api_post.php','&api_dev_key=CensoredDevKey&api_option=paste&api_paste_code=' .. JSON) 

Это не работает, и я не могу понять, почему.

EDIT: Я также пробовал это, и он не работал.

h = game:GetService'HttpService' 
api_params = { 
    ["api_dev_key"] = "CensoredDevKey", 
    ["api_option"] = "paste", 
    ["api_paste_code"] = ImgScript 
} 
api_params = h:JSONEncode(api_params) 
h:PostAsync('http://www.pastebin.com/api/api_post.php', api_params) 

EDIT: Я также попробовал это, и это не сработало:

h = game:GetService'HttpService' 
JSON = h:JSONEncode(ImgScript) --ImgScript is a table formatted like {{x,y,z}, {x,y,z}, {x,y,z}, etc.} 
data = h:UrlEncode('&api_dev_key=CensoredDevKey&api_option=paste&api_paste_code=' .. JSON) 
h:PostAsync('http://pastebin.com/api/api_post.php', data) 
+2

Я не думаю, что Pastebin API использует кодировку JSON? Ваш первый подход близок ... возможно, просто urlencode вставить код вместо JSON, кодирующий его? –

+0

Я попытался использовать UrlEncode вместо JSONEncode только для данных пасты и по всем 3 требуемым параметрам, но никто не работал. – GShocked

+1

Проверьте меня «DigitalVeer». У меня есть открытый исходный пример моего профиля для публикации в pastebin. Это под чистильщиком Skype. Я выгружаю решение завтра, когда на компьютере –

ответ

0

Итак, я закончил код, но, к сожалению, Roblox ограничивает размер PostAsync до 256 байтов, поэтому любая загрузка, превышающая это, будет GZIPed (до 1024 КБ), что Pastebin не знает, что делать.

Во всяком случае, я выпустил код здесь: http://www.roblox.com/Pastebin-Upload-item?id=302297532

Это:

--Created by GShocked. PM me if you have questions! 

h = game:GetService'HttpService' 
api_dev_key = '' --Your Pastebin developer key goes here. Log in first, and then you can find it at pastebin.com/api 
api_paste_code = '' --The content of your new paste 
api_paste_private = '1' --0 public; 1 unlisted; 2 private 
api_paste_name = '' --Name your new paste 
api_paste_expire_date = 'N' --N for never expire, 10M for 10 minutes, etc. 
api_paste_format = 'lua' --The syntax highlighting 
api_user_key = '' --This is generated using the login info 
api_paste_name = h:UrlEncode(api_paste_name) 
api_paste_code = h:UrlEncode(api_paste_code) 
username = '' --Your Pastebin username goes here 
password = '' --Your Pastebin password goes here 

api_user_key = h:PostAsync(
    'http://pastebin.com/api/api_login.php', 
    'api_dev_key=' .. api_dev_key .. '&api_user_name=' .. username .. '&api_user_password=' .. password, 
    2 
) 
print(api_user_key) --DON'T DELETE THIS! IT IS ESSENTIAL FOR THE USER KEY TO BE GENERATED! 
h:PostAsync(
    'http://pastebin.com/api/api_post.php', 
    'api_option=paste&api_user_key=' .. api_user_key .. '&api_paste_private=' .. api_paste_private .. '&api_paste_name=' .. api_paste_name .. '&api_paste_expire_date=' .. api_paste_expire_date .. '&api_paste_format=' .. api_paste_format .. '&api_dev_key=' .. api_dev_key .. '&api_paste_code=' .. api_paste_code, 
    2 
) 
3

Попробуйте следующее:

h = game:GetService'HttpService' 
pasteData = h:UrlEncode(h:JSONEncode(ImgScript)) 
h:PostAsync(
    'http://pastebin.com/api/api_post.php', 
    'api_dev_key=CensoredDevKey&api_option=paste&api_paste_code=' .. pasteData, 
    2 
) 

Последний параметр, 2specifies that данные отправленного Application/Url-Encoded.

Я думаю, что это должно сделать трюк. Сообщайте об этом, если это не так.

PS: Где вы получаете результат от этого запроса POST?

+0

Я понял, что мне также нужен логин и пароль для отправки в pastebin, а не только ключ dev. Так что это нужно было бы включить, но мне также нужно подождать ответа от pastebin, указав необходимую информацию (api_user_key), чтобы загрузить пасту. Я не уверен, как я буду ждать ответа. – GShocked