Авторы:
Благодарность:
Требования:
Мультиязычность:
Благодарность:
Благодарность всем контрибьютерам:
- Psycrow
- @Xelson
- GLoOoccK aka (C.A.B.O.C.O.)
- jonathan-up
- @ArKaNeMaN
Требования:
- AMX Mod X 1.8.3+
- AMX Mod X 1.8.2 - частичная поддержка - некоторые функции из инклудов недоступны, т.к. превышают длинну 32 символа.
- Для Linux:
- GLIBC 2.19 или выше
Мультиязычность:
- EN
Ключевые особенности
- Асинхронные запросы
- Поддержка HTTPS
- Поддержка FTP
- Встроенная поддержка JSON
- Url-кодирование для url и POST параметров
- HTTP аутентификация
- Таймауты для соединения и передачи данных
- Поддержка cookie
- Поддержка proxy
- Поддержка HTTP keep-alive
Примеры использования
GET запрос
Код:
http_get()
{
ezhttp_get("https://httpbin.org/get?foo=bar", "http_complete")
}
public http_complete(EzHttpRequest:request_id)
{
if (ezhttp_get_error_code(request_id) != EZH_OK)
{
new error[64]
ezhttp_get_error_message(request_id, error, charsmax(error))
server_print("Response error: %s", error);
return
}
new data[512]
ezhttp_get_data(request_id, data, charsmax(data))
server_print("Response data: %s", data)
}
POST запрос
Код:
http_post()
{
new EzHttpOptions:options_id = ezhttp_create_options()
ezhttp_option_set_header(options_id, "Content-Type", "text/plain")
ezhttp_option_set_body(options_id, "Hello!")
ezhttp_post("https://httpbin.org/post", "http_complete", options_id)
}
public http_complete(EzHttpRequest:request_id)
{
if (ezhttp_get_error_code(request_id) != EZH_OK)
{
new error[64]
ezhttp_get_error_message(request_id, error, charsmax(error))
server_print("Response error: %s", error);
return
}
new data[512]
ezhttp_get_data(request_id, data, charsmax(data))
server_print("Response data: %s", data)
}
FTP запросы
Код:
public ftp_upload()
{
ezhttp_ftp_upload(
.user = "user",
.password = "password",
.host = "127.0.0.1",
.remote_file = "wads/cstrike_1.wad",
.local_file = "cstrike.wad",
.on_complete = "ftp_upload_complete"
)
ezhttp_ftp_upload2(
.uri = "ftp://user:[email protected]/wads/cstrike_2.wad",
.local_file = "cstrike.wad",
.on_complete = "ftp_upload_complete",
.security = EZH_SECURE_EXPLICIT
)
}
Поведение при смене карты
По умолчанию при смене карты все запросы прерываются. Колбэки вызываются с кодом EZH_REQUEST_CANCELLED.Альтернативным вариантом является указание опции
ezhttp_option_set_plugin_end_behaviour(options_id, EZH_FORGET_REQUEST), в этом случае запрос не будет прерван при смене карты, но при завершении запроса после смены карты колбек не будет вызван.Очередь запросов
Модуль использует до 6 потоков для выполнения запросов, поэтому нет гарантии, что запросы будут выполняться в том порядке, в котором они были отправлены. Если вам необходимо выполнять запросы последовательно, вы можете создать очередь с помощьюnew EzHttpQueue:queue_id = ezhttp_create_queue(), а затем установить опцию ezhttp_option_set_queue(options_id, queue_id) для всех запросов, которые необходимо выполнить в этой очереди.Обратите внимание, очередь нужно создать только один раз, например при инициализации плагина.