Отправить HTTP GET-запрос асинхронно. Функция сразу возвращает ключ задачи, не блокируя выполнение скрипта. 


Асинхронные HTTP-функции не возвращают ответ сервера сразу. Они запускают запрос в отдельном потоке и возвращают строковый ключ, по которому готовый результат позже можно получить из внутреннего кеша памяти сервера через MemCacheExists и MemCacheGet позже. 


Синтаксис

function HTTPSendGetMessageAsync(const AURL, AHeaders: string; const ATimeOut: integer): string;

 

Параметры и возвращаемые значения

Параметр

Тип

Значение

AURL

string

адрес, куда следует отправлять запрос. Поддерживается как http, так и https. Вы можете указать любой порт для подключения, например, http://yourserver.com:8080/myservice/

AHeaders

string

специальные заголовки (если нужно). Разделяются CRLF, если нужно больше одного. Обычно, если сервис того не требует, пустая строка;

ATimeOut

integer

время в миллисекундах, максимальное время для ожидания ответа удалённого сервера.

 

Результат функции

Строковый ключ, по которому позже можно получить результат через MemCacheGet(). Если запрос ещё не завершён, соответствующая запись в кеше может отсутствовать.

 

Пример


var
  sKey, sResult, sValue: string;
  i: integer;
begin
  sKey := HTTPSendGetMessageAsync(
    'https://httpbin.org/get?from=mychat',
    'Accept: application/json',
    3000);
  mLogScript(sKey, 'Key');
  // ждём появления результата в кеше, максимум 3 секунды,
  // код для примера, подобные циклы с ScriptSleep в проде - плохая идея
  for i := 1 to 30 do begin
    if MemCacheExists(sKey) then begin
      sResult := MemCacheGet(sKey);
      mLogScript(sResult, 'Server answer');
      break;
    end;
    ScriptSleep(100);
  end;
end.


Результат работы скрипта

[19:17:22] (Log "PostMessageAsync"): [Key] httpget_async_{8a9c07cb-38a9-4133-b198-54b812819abd}21032026191722055

[19:17:22] (Log "PostMessageAsync"): [Server answer] { "args": { "from": "mychat" }, "headers": { "Accept": "application/json", "Host": "httpbin.org", "User-Agent": "Mozilla/4.0 (compatible; Synapse)", "X-Amzn-Trace-Id": "Root=1-69bed2a1-5b6688ad4bc1600741b8d3af" }, "origin": "95.67.34.140", "url": "https://httpbin.org/get?from=mychat" }

[19:17:22] (Run "PostMessageAsync"): Время выполнения скрипта: 574 мс

[19:17:22] (Run "PostMessageAsync"): Скрипт выполнен успешно.

 

Ещё посмотреть

MemCacheExists

MemCacheGet

mLogScript

ScriptSleep