PDA

Просмотр полной версии : [Native] HTTP(index, type, url[], data[], callback[])



Osetin
12.11.2013, 16:00
Для начала расскажу о функции:
Функция доступна с 0.3b версии
с помощью неё мы можем брать текст из интернета и он будет виден в сампе(возможно и другие применения)
Параметры функции:

(index, type, url[], data[], callback[])
index - ID (playerid,giveplayerid)
type - тип запроса который вы хотите отправить
url[] - URL запроса (без "http://")
data[] - любое сообщение данных которое будет отправлено с запросом
callback[] - Название функции обратного вызова если вы хотите использовать для обработки ответов на этот запрос.

Типы запросов(type):

HTTP_GET - Отправляет запрос на http.

HTTP_POST - Отправляет запрос с данными.

HTTP_HEAD - Отправляет запрос HTTP, но игнорирует любые данные ответа - возвращение только код ответа.
Коды ответов:

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
А так же стандартные коды ответов:

HTTP 404 (страница не найдена), 500 (ошибка сервера) или 403 (запрещено)

Пример:
В начале где все инклуды:

#include <a_http>
Создаём

forward MyHttpResponse(index, response_code, data[]);
в

public OnPlayerCommandText(playerid, cmdtext[])
добавляем

if(!strcmp("/hello",cmdtext,true))
{
HTTP(playerid, HTTP_GET, "www.killerchutney.com/hello.txt", "", "MyHttpResponse");
return 1;
}
Далее куда нибудь в конец:

public MyHttpResponse(index, response_code, data[])
{
new buffer[ 128 ];
if(response_code == 200) //Запрос успешен?
{
//Да!
format(buffer, sizeof(buffer), "Ответ: %s", data);
SendClientMessage(index, 0xFFFFFFFF, buffer);
}
else
{
//нет!
format(buffer, sizeof(buffer), "Сбой в запросе,код ответа: %d", response_code);
SendClientMessage(index, 0xFFFFFFFF, buffer);
}
}
Если все сделали верно то должно прислать(после ввода команды(/hello):Ответ:Hello there! Congratulations on your first HTTP request from within SA-MP!


Автор перевода:TAP04eGG