Эта функция была добавлена в версии 0.3b и не будет работать в более ранних версиях!
Отправляет HTTP запрос (потоковый).
(index, type, url[], data[], callback[])
index - ID для разделений HTTP запросов, если они отправляются на один и тот же обработчик (коллбэк).
type - Тип HTTP-запроса (будут указаны ниже).
url[] - URL адрес для отправки HTTP запроса (без "http://").
data[] - Любые POST-данные, которые вы хотите отправить с запросом (использовать при отправке с типом "POST").
callback[] - Обратный вызов (коллбэк), в котором вы хотите обрабатывать ответы от сервера.
ВОЗВРАЩАЕМЫЕ ФУНКЦИЕЙ ЗНАЧЕНИЯ:
- 1 - выполнено успешно.
- 0 - успешно не выполнено.
ТИПЫ ЗАПРОСОВ:
- HTTP_GET - отправляет обычный HTTP запрос.
- HTTP_POST - отправляет HTTP запрос с POST данными.
- HTTP_HEAD - Отправляет обычный HTTP-запрос, но игнорирует любые данные ответа - возвращает только код ответа.
КОДЫ ОТВЕТОВ ОТ ОПРАШИВАЕМОГО РЕСУРСА:
HTTP_ERROR_BAD_HOST 1 // невозможно соединиться: URL указан неверно HTTP_ERROR_NO_SOCKET 2 // невозможно соединиться: нет соединения с интернетом, или сервер не может открыть сокет для соединения HTTP_ERROR_CANT_CONNECT 3 // нет соединения HTTP_ERROR_CANT_WRITE 4 // нет прав на запись HTTP_ERROR_CONTENT_TOO_BIG 5 // содержимое слишком большое (невозможно столько записать в data[]) HTTP_ERROR_MALFORMED_RESPONSE 6 // неверный запрос // ОБЩИЕ ТИПИЧНЫЕ HTTP КОДЫ, которые также используются в response_code 200 - OK - выполнено успешно 404 - Not Found (не найдено) 301 / 302 - переадресация (временно / постоянно) 500 - Internal Error - ошибка сервера (не игрового, а опрашиваемого) 403 - Forbidden (доступ воспрещен)
ПРИМЕР ИСПОЛЬЗОВАНИЯ:
forward MyHttpResponse(index, response_code, data[]); public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp("/hello",cmdtext,true)) { HTTP(playerid, HTTP_GET, "kc.gd/hello.txt", "", "MyHttpResponse"); return 1; } return 0; } public MyHttpResponse(index, response_code, data[]) { new buffer[ 128 ]; if(response_code == 200) //является ли запрос успешным? { //ДА! format(buffer, sizeof(buffer), "URL ответил вот что: %s", data); SendClientMessage(index, 0xFFFFFFFF, buffer); } else // а если не так { //НИТ! format(buffer, sizeof(buffer), "Сервер ответил с ошибкой! Код ответа (HTTP): %d", response_code); SendClientMessage(index, 0xFFFFFFFF, buffer); } }