<?php
//Функция отправки POST запроса
function CurlPOST($url,$params){
// Инициализация сеанс cURL
if ($ch = curl_init()) {
// Устанавливает параметр для сеанса CURL
curl_setopt($ch, CURLOPT_URL, $url);
// TRUE для принудительного использования нового соединения вместо закэшированного
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
// TRUE для использования обычного HTTP POST. Данный метод POST использует обычный application/x-www-form-urlencoded, обычно используемый в HTML-формах.
curl_setopt($ch, CURLOPT_POST, true);
//Не получать HTTP заголовки
curl_setopt($ch, CURLOPT_HEADER, false);
// Все данные, передаваемые в HTTP POST-запросе.
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//TRUE для возврата результата передачи в качестве строки из curl_exec() вместо прямого вывода в браузер.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Количество секунд ожидания при попытке соединения. Используйте 0 для бесконечного ожидания.
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// Выполнение запроса - ответ на запрос записывается в переменную в виде строки
$out_str = curl_exec($ch);
//преобразование ответа в асс.массив ЕСЛИ: невозможно преобразовать, ТО: вывод стркоки
$out = (!is_null($out_arr = json_decode($out_str, true))) ? ($out_arr) : ($out_str);
// Возвращает строку с описанием последней ошибки текущего сеанса
//$err = curl_error($ch);
// функция - curl_close - Завершает сеанс cURL
curl_close($ch);
};
return $out;
//Конец фун. CurlPost($url,$params_post)
};
/*------------------------------------------------------------------------------------------------*/
//Функция отправки GET запроса
function CurlGET($url){
// Инициализация сеанс cURL
if ($ch = curl_init()) {
// Устанавливает параметр для сеанса CURL
curl_setopt($ch, CURLOPT_URL, $url);
// TRUE для принудительного использования нового соединения вместо закэшированного
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
//TRUE для сброса метода HTTP-запроса в метод GET. Так как GET используется по умолчанию, этот параметр необходим только в случае, если метод запроса был ранее изменен.
curl_setopt($ch, CURLOPT_HTTPGET, true);
//Не получать HTTP заголовки
curl_setopt($ch, CURLOPT_HEADER, false);
//TRUE для возврата результата передачи в качестве строки из curl_exec() вместо прямого вывода в браузер.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Количество секунд ожидания при попытке соединения. Используйте 0 для бесконечного ожидания.
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
// Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// Выполнение запроса - ответ на запрос записывается в переменную в виде строки
$out_str = curl_exec($ch);
//преобразование ответа в асс.массив ЕСЛИ: невозможно преобразовать, ТО: вывод стркоки
$out = (!is_null($out_arr = json_decode($out_str, true))) ? ($out_arr) : ($out_str);
// Возвращает строку с описанием последней ошибки текущего сеанса
//$err = curl_error($ch);
// функция - curl_close - Завершает сеанс cURL
curl_close($ch);
};
return $out;
//Конец фун. CurlGET($url)
};
/*------------------------------------------------------------------------------------------------*/
//Фун. формирования и отправки Х-го запроса в WG - "Общие данные клана"
function FormSendRequestPOST($clan_id,$klaster = 'ru' ) {
//Вх.параметры:
//$clan_id - идентификатор клана или строка-список нескольких идентификаторов (через запятую)
//$klaster - Код кластера (по умолчению 'ru', ЕСЛИ: параметр не задан)
//адрес -запроса
$str_url = 'http://api.worldoftanks.'.(($klaster == 'na' ) ? ('com' ) : ($klaster)).'/wgn/clans/info/';
//Вспомогательный массив !ВАШИХ! "APPLICATION-ID" по кластерам
$myAppId = array('ru' => 'demo', 'eu' => 'demo', 'na' => 'demo', 'asia' => 'demo', 'kr' => 'demo' );
//параметры POST-запроса
$params = 'application_id='.$myAppId[$klaster].'&fields=-description,-description_html,-motto,-emblems.x256,-emblems.x195,-emblems.x32,-emblems.x24,-private'.'&clan_id='.$clan_id.'&'.mt_rand().'=1';
//Вызов функции отправки запроса
$result = CurlPOST($str_url,$params);
//Проверка ответа
if (isset($result['status'],$result['data']) && $result['status'] == 'ok' ) {
//Вывод ответа
return $result['data'][$clan_id];
} else {
//!!!Здесь вызов ВАШЕЙ функции обработки ОШИБОК ответа API WG
return; //Вывод "неопределенного" ответа
//return $result;//Вывод ответа - "ошибки"
};
//Конец фун. FormSendRequestPOST()
};
/*------------------------------------------------------------------------------------------------*/
//Фун. формирования и отправки Х-го запроса в WG - "Общие данные клана"
function FormSendRequestGET($clan_id,$klaster = 'ru' ) {
//Вх.параметры:
//$clan_id - идентификатор клана или строка-список нескольких идентификаторов (через запятую)
//$klaster - Код кластера (по умолчению 'ru' - ЕСЛИ: параметр не задан)
//Вспомогательный массив !ВАШИХ! "APPLICATION-ID" по кластерам
$myAppId = array('ru' => 'demo', 'eu' => 'demo', 'na' => 'demo', 'asia' => 'demo', 'kr' => 'demo' );
//адрес -запроса
$str_url = 'http://api.worldoftanks.'.(($klaster == 'na' ) ? ('com' ) : ($klaster)).'/wgn/clans/info/'.'?application_id='.$myAppId[$klaster].'&fields=-description,-description_html,-motto,-emblems.x256,-emblems.x195,-emblems.x32,-emblems.x24,-private'.'&clan_id='.$clan_id.'&'.mt_rand().'=1';
//Вызов функции отправки запроса
$result = CurlGET($str_url);
//Проверка ответа
if (isset($result['status'],$result['data']) && $result['status'] == 'ok' ) {
//Вывод ответа
return $result['data'][$clan_id];
} else {
//!!!Здесь вызов ВАШЕЙ функции обработки ОШИБОК ответа API WG
return; //Вывод "неопределенного" ответа
//return $result;//Вывод ответа - "ошибки"
};
//Конец фун. FormSendRequestGET()
};
/*------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------*/
//Использование PHP библиотеки CURL для выполнения запросов в API WG
header('Content-Type: text/html; charset= utf-8' );
//ПРИМЕР, получения "Общих данных клана" вызовом функций POST и GET запросов...
$clan_id = 18503; //id клана
//или
//$clan_id = 18503,61318,82037; //список id кланов
$result = FormSendRequestPOST($clan_id);
//Вывод на печать...
echo ("<br>".'Фун. FormSendRequestPOST( '.$clan_id.' ) Получен ответ: '.$result."<br>" );
if(is_array($result)){
print "<PRE>";
print_r($result); //выводит информацию о переменной в удобочитаемом виде
print "</PRE>";
if(!empty($result)){reset($result);}; //перемещает внутренний указатель массива к его первому элементу
};
$result = FormSendRequestGET($clan_id);
//Вывод на печать...
echo ("<br>".'Фун. FormSendRequestGET( '.$clan_id.' ) Получен ответ: '.$result."<br>" );
if(is_array($result)){
print "<PRE>";
print_r($result); //выводит информацию о переменной в удобочитаемом виде
print "</PRE>";
if(!empty($result)){reset($result);}; //перемещает внутренний указатель массива к его первому элементу
};
?>