Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
comet:cometql:http [2016/03/14 16:35]
levhav создано
comet:cometql:http [2019/12/18 02:05] (текущий)
Строка 1: Строка 1:
 +<​rst>​__RU::​1-Отправка CometQL запросов по http/​https</​rst>​
 +
 ====== Отправка CometQL запросов по http/https ====== ====== Отправка CometQL запросов по http/https ======
  
-<note warning>​Это не рекомендованный способ взаимодействия с сервером. Он работает несколько медленее чем отправка CometQL запросов на прямую.</​note>+Есть случаи когда нет возможности использовать протокол MySQL для соединения с комет сервером. Для таких случаев можно отправлять команды комет серверу по HTTP/HTTPS.  
 + 
 +<note warning>​Это не рекомендованный способ взаимодействия с сервером. Он работает ​медленнее чем отправка CometQL запросов на прямую.</​note>​ 
 +<note warning>​Метод работает в тестовом режиме. О неполадках сообщайте в техническую поддержку.</​note>​ 
 + 
 +<note warning>​Метод работает в тестовом режиме. И поэтому интерфейс или адрес ​для приёма запросов может быть изменён. 
 + 
 +В низу статьи приведён исходный код php файла. Вы можете его скачать и поставить на свой хостинг чтобы обезопасить себя от изменений в интерфейсе работы api по HTTP. На время пока работа через HTTP запросы не выйдет из статуса бета тестирования,​ если оно вообще выйдет из этого статуса. 
 +</​note>​ 
 + 
 +Для ​отправки запроса 
 + 
 +<​code>​ 
 +http://​comet-server.ru/​cometapi.php?​query=show+tables&​id=15&​key=lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8 
 +</​code>​ 
 + 
 +  * query это ​CometQL запрос 
 +  * id это [[comet:​dev_id|идентификатор разработчика]] 
 +  * key это [[comet:​dev_id|секретный ключ разработчика]] 
 + 
 +Ответ ​придёт в json формате. В случаи успеха ответ будет таким 
 +<​code>​{"​data":​[{"​Tables":"​users_auth"​},​{"​Tables":"​users_time"​},​{"​Tables":"​users_messages"​},​{"​Tables":"​pipes_messages"​},​{"​Tables":"​users_in_pipes"​},​{"​Tables":"​pipes"​},​{"​Tables":"​pipes_settings"​}]}</​code>​ 
 + 
 +В случаи ошибки ответ будет таким 
 +<​code>​{"​error":​2,"​text":"​Syntax error in query","​see":"​https:​\/​\/​comet-server.ru\/​wiki\/​doku.php\/​comet:​cometql:​error"​}</​code>​ 
 +===== Примечание ===== 
 + 
 +Ниже приведён исходный код файла выполняющего роль промежуточного звена которое принимает запросы по HTTP и передаёт их дальше по протоколу mysql. Вы можете его скачать и поставить на свой хостинг чтобы обезопасить себя от изменений в интерфейсе работы HTTP api 
 + 
 +<file php cometapi.php>​ 
 +<?php 
 + 
 +header('​Content-Type:​ application/json; charset=utf-8'​);​ 
 +header("​Access-Control-Allow-Origin:​ *"); 
 + 
 +ini_set('​display_errors','​on'​);​ 
 +error_reporting (E_ALL); 
 + 
 + 
 +function getParam($name) 
 +
 +    if(isset($_GET[$name])) 
 +    { 
 +        return trim(urldecode($_GET[$name]));​ 
 +    } 
 +    else if(isset($_POST[$name])) 
 +    { 
 +        return trim(urldecode($_POST[$name]));​ 
 +    } 
 + 
 +    return NULL; 
 +
 + 
 +$q       = getParam("​query"​);​ 
 +$dev_id ​ = getParam("​id"​);​ 
 +$dev_key = getParam("​key"​);​ 
 +if($q == NULL || $dev_id == NULL || $dev_key == NULL) 
 +
 +    header('​HTTP/​1.1 400 Bad Request'​);​ 
 +    die(json_encode(array("​error"​ ="Bad Request, query, id or key is empty"​)));​ 
 +
 + 
 +$q = trim(urldecode($q));​ 
 +$link = mysqli_connect("​app.comet-server.ru",​ $dev_id, $dev_key, "​CometQL_v1"​);​ 
 + 
 + 
 +if ( !$link ) 
 +
 +    header('​HTTP/​1.1 403 Bad Request'​);​ 
 +    die(json_encode(array("​error"​ => "​Невозможно подключение к CometQL"​)));​ 
 +
 + 
 +$result = mysqli_query (  $link, $q ); 
 +if(mysqli_errno($link) != 0) 
 +
 +    header('​HTTP/​1.1 400 Bad Request'​);​ 
 +    die(json_encode(array("​error"​ => mysqli_errno($link),​ "​text"​ => mysqli_error($link),​ "​see"​ => "​https://​comet-server.ru/​wiki/​doku.php/​comet:​cometql:​error"​)));​ 
 +
 + 
 +$data = array(); 
 +while ($row = mysqli_fetch_assoc($result)) 
 +
 +    $data[] = $row; 
 +}
  
-<note warning>​Метод работает в тестовом режимеО неполадках сообщайте в техническую поддержку</note>+header('​HTTP/​1.1 200 OK'​);​ 
 +die(json_encode(array("​data"​ => $data))); 
 +</file>