Ad Widget

Collapse

Вопрос по API

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • alibek22
    Member
    • Mar 2022
    • 46

    #1

    Вопрос по API

    Есть такая обертка для работы с Zabbix:
    Code:
    	private function request($method, $params=null, $id=null)
    	{
    		$req = [];
    		$req['jsonrpc'] = "2.0";
    		$req['method'] = $method;
    		$req['params'] = $params;
    		$req['id'] = $id;
    		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    		curl_setopt($curl, CURLOPT_HTTPHEADER, "Content-Type: application/json-rpc");
    		curl_setopt($curl, CURLOPT_POST, true);
    		curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($req, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ));
    		curl_setopt($curl, CURLOPT_URL, "http://.../zabbix/api_jsonrpc.php");
    		$res = curl_exec($curl);
    		$ret = curl_getinfo($curl);
    ...
    Но при вызове curl_exec в $res возвращается пустое значение.
    Хотя в $ret видно, что код возврата 200, то есть запрос выполнен успешно.
    Не могу понять, почему возвращается пустой результат на любой запрос, даже apiinfo.version.
  • alibek22
    Member
    • Mar 2022
    • 46

    #2
    Вот через консоль:
    Code:
    $ curl -H 'Content-Type: application/json-rpc' -d '{"jsonrpc":"2.0","method":"apiinfo.version","params":{}}' -v http://netmon.local/zabbix/api_jsonrpc.php
    *   Trying 10.1.128.14:80...
    * TCP_NODELAY set
    * Connected to netmon.local (10.1.128.14) port 80 (#0)
    > POST /zabbix/api_jsonrpc.php HTTP/1.1
    > Host: netmon.local
    > User-Agent: curl/7.68.0
    > Accept: */*
    > Content-Type: application/json-rpc
    > Content-Length: 56
    > 
    * upload completely sent off: 56 out of 56 bytes
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 200 OK
    < Server: nginx/1.14.2
    < Date: Wed, 06 Apr 2022 14:18:35 GMT
    < Content-Type: application/json
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < Access-Control-Allow-Origin: *
    < Access-Control-Allow-Headers: Content-Type
    < Access-Control-Allow-Methods: POST
    < Access-Control-Max-Age: 1000
    < 
    * Connection #0 to host netmon.local left intact

    Comment

    • alibek22
      Member
      • Mar 2022
      • 46

      #3
      Разобрался. В запросе нужно обязательно передавать параметр id, хотя бы равный 0. Без него возвращает пустой ответ.

      Теперь другой вопрос.
      Выполняю такой запрос:
      Code:
      {"jsonrpc":"2.0","method":"dashboard.get","params":{"output":"extend","selectWidgets":"extend","dashboardids":["59"]},"id":2,"auth":"..."}
      Но в ответ получаю ошибку: Invalid parameter "/": unexpected parameter "selectWidgets".
      Не могу понять, почему.
      Тут по сути такой же пример: https://www.zabbix.com/documentation...ashboard-by-id

      Comment

      Working...