HTTP.DownloadSecure

HTTP.DownloadSecure ( string URL,
string Filename,
number Mode = MODE_BINARY,
number Timeout = 20,
number Port = 443,
table AuthData = nil,
table ProxyData = nil,
function CallbackFunction = nil )
Примеры

Описание

Загружает файл с интернет веб сайта при помощи HTTPS (secure hypertext transfer protocol - защищенный протокол передачи гипертекста). Защищенный протокол передачи гипертекста (HTTPS) это протокол связи, разработанный для передачи зашифрованной информации между компьютерами через Интернет. HTTPS - это тот же самый http, использующий уровень защищённых сокетов (Secure Socket Layer - SSL). Уровень защищённых сокетов - это протокол шифрования вызываемый на веб-сервере, использующем HTTPS.

Примечание: Успешное использование протокола HTTPS требует защищенного сервера для обработки запроса.

Примечание: Этому действию требуется чтобы у конечного пользователя был установлен браузер Internet Explorer версии 4.0 или выше.

Примечание: Для загрузки по умолчанию будут применены установки прокси по умолчанию из текущих настроек Internet Explorer, которые являются рекомендуемыми. Тем не менее, если нужны другие настройки прокси, они могут быть переданы через параметр ProxyData.

Совет: Если это действие дает ошибку, можно получить подробности указанной HTTP ошибки при помощи действия HTTP.GetHTTPErrorInfo.

Параметры

URL

(строка) Полный URL-адрес к файлу, который нужно загрузить.

Filename

(строка) Путь назначения и имя файла, который нужно загрузить. Например, C:\\MyFolder\\patch.zip.

Mode

(число) Метод, используемый для сохранения файла. Выбор из:

КОНСТАНТА
CONSTANT
ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
MODE_BINARY0Сохранение файла в том же виде как он и загружен. (По умолчанию)
MODE_TEXT1Конвертировать файл из текстового режима Unix в Windows текстовый режим, если это необходимо.

Timeout

(число) Максимальное время в секундах, в течении которого действие будет ожидать ответа после попытки соединения. Значение по умолчанию равно 20.

Примечание: Значения тайм-аута интерпретируются различными способами во время связи клиента с сервером. В результате фактический тайм-аут, используемый соединением, может отличаться от указанного значения.

Port

(число) Порт для подключения. Значение по умолчанию равно 443.

AuthData

(таблица) (таблица) Таблица содержащая основную информацию HTTP аутентификации, которая может быть использована для получения доступа к файлу. (Этот параметр дополнительный, необязательный. Если загрузка не требует HTTP аутентификации, просто оставьте этот параметр пустым.) Таблица индексирована следующими ключами:

КЛЮЧ
KEY
ТИП
TYPE
ОПИСАНИЕ
DESCRIPTION
UserNameстрокаИмя пользователя, используемое во время HTTP аутентификации.
PasswordстрокаПароль, используемый во время HTTP аутентификации.

ProxyData

(таблица) Таблица содержащая данные о прокси-сервере пользователя. Можно передать значение nil (значение по умолчанию) для использования параметров прокси по умолчанию из текущих настроек браузера Internet Explorer (рекомендуемое), или передать таблицу определенных параметров прокси. (Возможно потребуется запрашивать эти данные у пользователя.) Таблица индексированная следующими ключами:

КЛЮЧ
KEY
ТИП
TYPE
ОПИСАНИЕ
DESCRIPTION
PUserNameстрокаИмя пользователя прокси-сервера.
PPasswordстрокаПароль прокси-сервера.
PServerAddressстрокаАдрес прокси-сервера.

CallbackFunction

(функция) Имя функции, которая будет вызываться всякий раз при выполнении операции загрузки. (Эту возвращающуюся функцию можно использовать для отображения хода выполнения операции загрузки, своим собственным способом.)

Примечание: Если CallbackFunction установлена как nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.)

Возвращающаяся функция должна иметь возможность принять следующие параметры:

BytesRead

(число) Количество байт, что были загружены на настоящий момент.

FileSize

(число) Размер файла в байтах или 0, если размер файла не может быть получен от сервера.

Примечание: Если для доступа к файлу используется перенаправление, его размер может быть недоступен и в качестве параметра FileSize будет проходить нуль.

TransferRate

(число) Текущая скорость передачи в килобайтах в секунду.

SecondsLeft

(число) Предполагаемое число секунд, оставшееся для загрузки.

SecondsLeftFormat

(строка) Предполагаемое число оставшихся секунд, сформированное как строка в виде: "MM:SS"

Message

(строка) Или пустая строка (""), или информационное сообщение отправленное сервером, такое как например, "Resolving host name - Разрешение имени хоста" или "Connecting to Server - Подключение к серверу".

Примечание: Если этот параметр не пустая строка, это означает, что он находится в состоянии занято, или перед началом загрузки, или в конце загрузки. В этом случае все другие параметры будут проигнорированы.

Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать загрузку файла:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueПродолжить загрузку файла.
falseОстановка загрузки файла, как только это станет возможным.

Возврат

Ничего. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия

Примеры

Пример 1

HTTP.DownloadSecure("https://www.indigorose.com/downloads/sample.zip", _TempFolder .. "\\sample.zip", MODE_BINARY, 20, 443, nil, nil, nil);
Загружаем файл "sample.zip" с сайта "http://www.indigorose.com/downloads" во временную папку пользователя.

Примечание: _TempFolder это встроенная переменная которая содержит путь к папке "Temp" в системе пользователя.

Пример 2

-- Check to see if the user is connected to the internet
-- Смотрим, есть ли у пользователя подключение к Интернету
connected = HTTP.TestConnection("http://www.indigorose.com", 20, 80, nil, nil);

-- If they are connected.
-- Если соединение есть.
if connected then
    -- Download a file to their temporary directory.
    -- Загружаем файл во временную директорию.
    StatusDlg.Show(MB_ICONNONE, false);
    HTTP.DownloadSecure("https://www.indigorose.com/update.exe", _TempFolder .. "\\update.exe", MODE_BINARY, 20, 443, nil, nil, nil);

    -- Get any error codes that may have been returned by the download action.
    -- Получаем коды любых ошибок, которые могут быть возвращены действием загрузки.
    error = Application.GetLastError();
    StatusDlg.Hide();

    -- If there was an error during the download, display the error message.
    -- Если во время загрузки была ошибка, показываем сообщение об ошибке.
    if error ~= 0 then
        result = Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);

    -- If there was no error during the download.
    -- Если во время загрузки ошибки не было.
    else
        -- Get the CRC value of the downloaded file.
        -- Получаем CRC значение загруженного файла.
        crc_value = File.GetCRC(_TempFolder.."\\update.exe");
        -- Check to see if the CRC value matches it's expected value.
        -- Проверяем совпадает ли значение CRC с ожидаемым значением.
        if crc_value == 824907888 then

            -- Run the exectuable that was downloaded.
            -- Запускаем исполнение загруженного файла.
            File.Run(_TempFolder .. "\\update.exe", "", "", SW_SHOWNORMAL, true);

        -- The CRC value does not match. Display an error message to the user.
        -- CRC значение не совпадает. Показываем пользователю сообщение об ошибке.
        else
            result = Dialog.Message("Error", "The downloaded file is incomplete. Please try downloading again.", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);
        end
    end

-- Display a notice informing them that they are not connected.
-- Показываем пользователю сообщение об отсутствии соединения с Интернетом.
else
    Dialog.Message("Internet Error", "You are not connected to the internet. Please connect to download.");
end
Вначале этого примера проверяем есть ли у пользователя соединение с интернетом. Если оно имеется, загружаем файл во временную директорию. Затем этот файл проверяется перед запуском, чтобы убедиться в его комплектности и неповрежденности. Последовательность проверок выполняется этим скриптом для обработки любых случившихся ошибок и пользователю показываются уведомительные сообщения, если какое из действий заканчивается неудачно.

Примечание: _TempFolder это встроенная переменная которая содержит путь к папке "Temp" в системе пользователя.

Пример 3

-- Callback function for HTTP.DownloadSecure
-- Возвращающаяся функция для HTTP.DownloadSecure
function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
    -- Convert total and downloaded bytes into formatted strings
    -- Конвертируем полное и загруженное количество байтов в строковый формат
    sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
    sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

    -- Output time left, formatted.
    -- Переводим в строку оставшееся время загрузки.
    StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);

    -- Output formatted sizes to user through statusdlg status text
    -- Выводим конвертированные в строки размеры пользователю через текст состояния окна statusdlg
    StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

    -- Set meter position (fraction downloaded * max meter range)
    -- Устанавливаем позицию счетчика (частично загруженный размер * макс. значение счетчика)
    StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end

-- Set statusdlg title and message
-- Устанавливаем заголовок и сообщение окна statusdlg
StatusDlg.SetTitle("Downloading . . . ");
StatusDlg.SetMessage("Currently downloading file . . . ");

-- Set meter range (max range = 65534)
-- Устанавливаем диапазон измерения (макс.значение = 65534)
StatusDlg.SetMeterRange(0, 65534);

-- Show the StatusDlg
-- Показываем окно StatusDlg
StatusDlg.Show(0, false);

-- Download a file from the internet to the user's computer
-- Uses DownloadCallback() as the callback function
-- Загружаем файл из интернета в компьютер пользователя
-- Используем DownloadCallback() как возвращающуюся функцию
HTTP.DownloadSecure("https://www.yourdomain.com/downloads/update.exe", _TempFolder .. "\\update.exe", MODE_BINARY, 20, 443, nil, nil, DownloadCallback);

-- Hide the StatusDlg
-- Скрываем окно StatusDlg
StatusDlg.Hide();
Загружаем файл из Интернета на компьютер пользователя. Возвращающаяся функция "DownloadCallback" управляет диалоговым окном состояния.
Смотрите также: Связанные действия