MyChat Scripts: функція HTTPSendGetMessageAsync, надіслати мережевий GET-запит в асинхронному режимі
Надіслати 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"): Скрипт виконано успішно.