Перейти к основному содержимому

Выполнение PUT-запроса (http.put)

Объявление

HTTP_код, JSON_текст_заголовков_ответа, тело_ответа = http.put(URL [, тайм-аут_в_секундах, заголовки_запроса, данные_тела_запроса, URL_без_ESCAPE ])

Объявление (именованные параметры)

Поддерживается с 20250625; параметры прогресса поддерживаются в версиях после 20260402

HTTP_код, JSON_текст_заголовков_ответа, тело_ответа = http.put{
url = URL;
timeout = тайм-аут_в_секундах;
headers = заголовки_запроса;
params = параметры_Query;

-- Следующие параметры тела запроса нельзя задавать одновременно; приоритет: multipart > data > json > upload_file
multipart = multipart_форма_тела_запроса;
data = данные_тела_запроса;
json = JSON_тела_запроса;
upload_file = путь_загружаемого_файла_тела_запроса;

download_file = путь_для_сохранения_тела_успешного_ответа;
progress = функция_обратного_вызова_прогресса;
progress_interval_ms = интервал_прогресса_в_миллисекундах;
}

Параметры

  • URL
    Строка, адрес запрашиваемого URL; по умолчанию метод выполняет escape URL. Если это не нужно, см. описание параметра URL без ESCAPE
  • тайм-аут_в_секундах
    Вещественное число, необязательный параметр; время ожидания запроса в секундах, по умолчанию 10
  • заголовки_запроса
    Таблица, необязательный параметр; заголовки отправляемого запроса в формате {field1 = value1, field2 = value2, ...}, по умолчанию {}
  • параметры_Query
    Таблица, необязательный параметр; параметры Query отправляемого запроса в формате {field1 = value1, field2 = value2, ...}, по умолчанию {}
  • данные_тела_запроса
    Строка, необязательный параметр; содержимое, отправляемое методом PUT, по умолчанию пустая строка
    20250625 если это таблица, она отправляется в кодировке application/x-www-form-urlencoded
  • multipart_форма_тела_запроса
    Таблица, необязательный параметр; multipart-данные формы, отправляемые методом PUT, в формате {field1 = value1, field2 = value2, ...}, по умолчанию {}
  • JSON_тела_запроса
    Таблица, необязательный параметр; отправляется в кодировке application/json
  • путь_загружаемого_файла_тела_запроса
    Строка, необязательный параметр; данные файла отправляются непосредственно как тело запроса
  • путь_для_сохранения_тела_успешного_ответа
    Строка, необязательный параметр; при указании тело успешного ответа сохраняется, и возвращается путь к файлу
  • функция_обратного_вызова_прогресса
    Функция, необязательный параметр, поддерживается в версиях после 20260402. Вызывается при изменении прогресса загрузки или выгрузки; первый параметр — текущая информация о прогрессе
  • интервал_прогресса_в_миллисекундах
    Целое число, необязательный параметр, поддерживается в версиях после 20260402. Задаёт интервал вызова обратного вызова прогресса в миллисекундах
  • URL без ESCAPE
    Логическое значение, необязательный параметр; true отправляет запрос без escape URL, по умолчанию false
    Для пользовательского escape URL см. модуль lcurl, easy:escape и easy:unescape

Возвращаемое значение

  • HTTP-код
    Целое число, код HTTP текущего запроса; при тайм-ауте возвращает -1
  • JSON-текст заголовков ответа
    Строка или nil; после запроса возвращается информация о заголовках в формате JSON, при тайм-ауте — nil
  • тело ответа
    Строка или nil; содержимое ответа после завершения запроса. Если тело сохранено в файл, это путь к файлу; при тайм-ауте — nil

Описание

Отправляет данные в сеть методом PUT протокола HTTP/1.1; использование аналогично POST.
Функция может уступить выполнение: до её возврата другие потоки могут получить возможность работать

Структура info, передаваемая функции обратного вызова прогресса:

{
count_of_bytes_sent = число_отправленных_байт;
count_of_bytes_expected_to_send = ожидаемое_число_отправляемых_байт;
count_of_bytes_received = число_полученных_байт;
count_of_bytes_expected_to_receive = ожидаемое_число_получаемых_байт;
}

Пример

local code, res_headers, body = http.put("https://httpbin.org/put?hello=world&你好=世界", 15, {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)", -- Имитация запроса IE8
["Cookie"] = "a=1; b=2; c=3"; -- Одновременно отправка Cookie
}, "需要发送过去的数据")
if code == 200 then -- Если возвращённый код — HTTP_OK
sys.alert(body)
end

Примечание: приведённый код использует функцию из другого раздела sys.alert.

Пример (именованные параметры)

local code, res_headers, body = http.put{
url = "https://httpbin.org/put";
timeout = 15;
headers = {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"; -- Имитация запроса IE8
["Cookie"] = "a=1; b=2; c=3"; -- Одновременно отправка Cookie
};
params = {
["hello"] = "world";
["你好"] = "世界";
};
data = "需要发送过去的数据";
}
if code == 200 then -- Если возвращённый код — HTTP_OK
sys.alert(body)
end

Примечание: приведённый код использует функцию из другого раздела sys.alert.