Различия

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

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

comet:cometql:http [2016/03/14 16:57]
levhav [Отправка CometQL запросов по http/https]
comet:cometql:http [2019/12/18 02:05]
Строка 1: Строка 1:
-====== Отправка CometQL запросов по http/https ====== 
  
-Есть случаи когда нет возможности использовать протокол MySQL для соединения с комет сервером. Для таких случаев можно отправлять команды комет серверу по HTTP/​HTTPS. ​ 
- 
-<note warning>​Это не рекомендованный способ взаимодействия с сервером. Он работает медленнее чем отправка CometQL запросов на прямую.</​note>​ 
-<note warning>​Метод работает в тестовом режиме. О неполадках сообщайте в техническую поддержку.</​note>​ 
- 
-<note warning>​Метод работает в тестовом режиме. И поэтому интерфейс или адрес для приёма запросов может быть изменён.</​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|секретный ключ разработчика]] 
-===== Примечание ===== 
- 
-Ниже приведён исходный код файла выполняющего роль промежуточного звена которое принимает запросы по HTTP и передаёт их дальше по протоколу mysql. ​ 
- 
-<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; 
-} 
- 
-header('​HTTP/​1.1 200 OK'); 
-die(json_encode(array("​data"​ => $data))); 
-</​file>​