Синхронизация с сайтом - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
Синхронизация с сайтом
[CM]Logotipo Дата: Понедельник, 24.02.2014, 20:35 | Сообщение # 1
Авторитет
Сообщений: 1083
Статус: Offline
В данном уроке расскажу и покажу, как использовать функцию.
Для начала подключим икнлюд, если он ещё не подключен.
Код
#include <a_http>

Сама функция:
Код
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
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума