[CM]Logotipo |
Дата: Понедельник, 24.02.2014, 20:35 | Сообщение # 1
|
Авторитет
Сообщений: 1083
Статус: Offline
|
В данном уроке расскажу и покажу, как использовать функцию. Для начала подключим икнлюд, если он ещё не подключен. Сама функция: Код HTTP(index, type, url[], data[], callback[]); Рассмотрим по-подробнее параметры: index - id запроса, полезно, если мы посылаем запрос от каждого игрока/машины..в отдельности type - тип запроса, типы расписаны ниже url[] - адрес странички, на которую мы отсылаем запрос data[] - сам текст запроса. callback[] - название паблика, который вызывается после отсылки запроса (ВАЖНО!!!параметры калбека - (index, response_code, data[]) )
Типы запросов: HTTP_GET - отправка обычного HTTP запроса ( на получение данных ) HTTP_POST - отправка запроса с применением параметра "data[]" HTTP_HEAD - отправка обычного запроса, но с игнорированием кода ответа
Рассмотрим параметр response_cod: Код 200//успешно HTTP_ERROR_BAD_HOST 1//плохое соединение HTTP_ERROR_NO_SOCKET 2//тоже плохое соединение ( не знаю в чём разница ) HTTP_ERROR_CANT_CONNECT 3//невозможно подключиться HTTP_ERROR_CANT_WRITE 4//невозможно отправить данные HTTP_ERROR_CONTENT_TOO_BIG 5//слишком большое время ожидания HTTP_ERROR_MALFORMED_RESPONSE 6//некорректный ответ 404//страница не найдена 403//доступ закрыт 500//ошибка сервера
Небольшой пример, как сделан мониторинг сервера у меня ( на php ): Код public MonitorUpdate() { new httpstr[98]; new players=0; for(new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i))players++; format(httpstr, 98, "colla***-rp.ru/mon_update.php?now=%i&max_now=%i&time=%i", players,GetMaxPlayers(),gettime()); HTTP(0, HTTP_GET, httpstr, "", ""); //т.е. мы отослали на сайт инфу ( не по стандарту, а через php ) о кол-ве игроков на сервере }
Ещё пример с применением index and callback ( взято с оф.вики ): Код forward MyHttpResponse(index, response_code, data[]);
public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp("/test",cmdtext,true)) { HTTP(playerid, HTTP_GET, "test.test/hello.txt", "", "MyHttpResponse"); return 1; } return 0; }
public MyHttpResponse(index, response_code, data[]) { //В данном каллбеке вместо playerid, который мы не можем получить в данной функции, будет index new buffer[ 128 ]; if(response_code == 200) //проверка на успешное подключение { format(buffer, sizeof(buffer), "Пришла инфа с сайта: %s", data); SendClientMessage(index, -1, buffer); } else//возникли ошибки { format(buffer, sizeof(buffer), "Подключение не удалось по причине %d", response_code); SendClientMessage(index, -1, buffer); } }
Примечание: можно не создавать отдельный каллбек, с целью проверить успешен или нет запрос, функция возвращает 1, в случае удачного запроса и 0, в случае возникновения ошибок. Пример Код public MonitorUpdate() { new httpstr[98]; new players=0; for(new i=0;i<MAX_PLAYERS;i++)if(IsPlayerConnected(i))players++; format(httpstr, 98, "colla***-rp.ru/mon_update.php?now=%i&max_now=%i&time=%i", players,GetMaxPlayers(),gettime()); if(!HTTP(0, HTTP_GET, httpstr, "", ""))print("Мониторинг обновлён"); else print("Не удалось обновить мониторинг, возникли ошибки!"); }
Скуп ВК RakDroid - прокачка аккаунтов с телефона VKMusic - вк музыка без браузера Делаю сайты/софт/стимботов на заказ
Сообщение отредактировал [CM]Logotipo - Понедельник, 24.02.2014, 20:38 |
|
|
|