HTTP

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Отправляет HTTP-запрос (в отдельном потоке).

Параметры:

(index, type, url[], data[], callback[])
index Индекс, передаваемый в автовызываемую функцию (см. прим.)
type Тип запроса.
url[] Адрес (URL), по которому будет отправлен запрос (без префикса "http://").
data[] Данные (закодированные в виде строки), отправляемые в POST-запросе.
callback[] Название функции-обработчика, которая будет вызвана после выполнения запроса.


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

1 при успешном выполнении, либо 0, если не удалось отправить запрос.

Info rhombus.png
Примечание
Параметр index может быть полезен для того, чтобы отличать разные запросы, совершаемые с указанием одной и той же автовызываемой функции. Например, в index можно указать ID игрока - этот ID будет передан в автовызываемую функцию (см. пример) и в ней будет известно, для какого игрока отправлялся запрос.
Вызываемая после запроса функция (параметр callback) должна быть объявлена с атрибутом public либо её название должно начинаться с символа @.
В параметре callback можно указать пустую строку - в этом случае запрос будет совершён, но без вызова автовызываемой функции.


Пример использования:

CMD:http(playerid, params[])
{
    HTTP(playerid, HTTP_GET, "pawn-lang.org", "", "MyHttpResponse");
    return SendClientMessage(playerid, -1, "Запрос отправлен.");
}

// Вместо "MyHttpResponse" можно задать функции любое другое название,
// главное не забыть указать то же самое название в вызове функции HTTP().
forward MyHttpResponse(index, response_code, data[]);
public  MyHttpResponse(index, response_code, data[])
{
    new string[144];

    // Если HTTP-запрос совершился успешно (код 200), выведем ответ сайта, иначе - сообщим код ошибки.
    if (response_code == 200)
        format(string, sizeof(string), "Ответ сайта: %s", data);
    else
        format(string, sizeof(string), "Неудача; запрос завершился с кодом %d", response_code);

    // В параметре index содержится ID игрока, который был передан 1-м параметром в вызове HTTP().
    return SendClientMessage(index, -1, string);
}


См. также: