Меню

Ошибка авторизации на сервере unknown json

King's Bounty: Legions

от NIVAL, INC.

Цена: БесплатноУстройства: iPhone, iPad

Сюжет игры развивается в классическом «мире меча и магии», где участнику придётся победить во множестве схваток и сражений, в том числе и магических, а также пройти интересные встроенные квесты. Интеграция в Facebook позволяет играть под единым аккаунтом, а внутренний чат поддерживает общение с участниками по всему миру. Высококачественная 3D графика, отличное звуковое сопровождение и захватывающий геймплей привлекли в игру сотни тысяч пользователей.

Версия: 1.10.80 от 21 августа 2012
Язык: Русский
Размер: 797 Мб
Возраст: 12+
Официальный сайт: http://www.playkb.com

Геймплей игры

Видеообзор и инструкция

Добавить видеоролик

Для этого приложения пока не указаны ссылки

Добавить ссылку

I’m working on an application that allows data transfer from Android to PHP server and I don’t know why it doesn’t support JSON?

Here is my code:

<?php
JSON.parse();
$decode = json_decode($_REQUEST['request']);
$json = $decode->name;
header('Content-type:application/json');
echo json_encode($json);
?>

Alexey Zimarev's user avatar

asked Mar 29, 2016 at 11:20

Sarah El-Kaffel's user avatar

1

check your JSON at http://jsonlint.com
If the JSON is valid than your php code may not be correct.

Show some code for specifics.

answered Mar 29, 2016 at 11:24

Vikas Joshi's user avatar

You can send Json data as string from android using following code :

BufferedReader reader = null;

        // Send data
        try {

            /* forming th java.net.URL object */
            URL url = new URL(this.url);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestProperty("Content-Type", "application/json");
            urlConnection.setRequestProperty("Accept", "application/json");
            urlConnection.setRequestMethod("POST");
            urlConnection.connect();

            /* pass post data */
            byte[] outputBytes = jsonData.toString().getBytes("UTF-8");
            OutputStream os = urlConnection.getOutputStream();
            os.write(outputBytes);
            os.close();

            /* Get Response and execute WebService request*/
            int statusCode = urlConnection.getResponseCode();

            /* 200 represents HTTP OK */
            if (statusCode == HttpsURLConnection.HTTP_OK) {

                inputStream = new BufferedInputStream(urlConnection.getInputStream());
                ResponseData= convertStreamToString(inputStream);

            } else {

                ResponseData = null;
            }

and in php,you can get data by adding following code :

    $post_body = file_get_contents('php://input');
    $post_body = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($post_body));
    $reqData[] = json_decode($post_body);

    $postData = $reqData[0];
    echo $postData->name;

answered Mar 29, 2016 at 11:46

Harshal Bhatt's user avatar

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Я хочу получить доступ к странице JSON продукта в приложении JD Sport. Для этого я использовал приложение Charles, которое позволило мне получить следующий URL-адрес и все заголовки, необходимые для доступа к этой странице:

https://prod.jdgroupmesh.cloud/stores/jdsportsfr/products/15958093_jdsportsfr

Когда я хочу получить доступ к странице JSON через мой следующий скрипт Python, страница возвращает эту ошибку:

{'error': {'message': 'API key is not valid. Request authorization failed. Bad MAC'}}

Я не понимаю, что мне нужно сделать, чтобы получить информацию на странице JSON.

Заранее спасибо

import requests
import json


headers = {
    'Host': 'prod.jdgroupmesh.cloud',
    'X-NewRelic-ID': 'VQYDUFVWDRABVFVRBwMOV10=',
    'Accept': '*/*',
    'Connection': 'keep-alive',
    'X-API-Key': 'B3B51B56ADC34016A6FEF7F8C337B836',
    'mesh-version': 'cart=4',
    'MESH-Commerce-Channel': 'iphone-app',
    'User-Agent': 'jdsportsfr/6.8.5.2214 (iphone-app; iOS 14.4)',
    'Accept-Language': 'fr-fr', 
    'Accept-Encoding' : 'gzip, deflate, br',
    'X-Request-Auth': 'Hawk id="f2188a5b06", mac="V/227yl11UzqV0Wr3Mb0A8SeOVeN94vY1QEXLEucBXc=", ts="1613150841", nonce="8ZZJMN"',
    'mesh-version': 'cart=4'
}


params = (
    ('expand', 'variations,informationBlocks,customisations'),
    ('channel', 'iphone-app'),
)

stock_json_raw = requests.get('https://prod.jdgroupmesh.cloud/stores/jdsportsfr/products/15958093_jdsportsfr/imageSpinSet',headers=headers, params=params).text.strip()#, headers=headers, params=params).text.strip()
stock_json = json.loads(stock_json_raw)
print(stock_json)

1 ответ

Вам нужно использовать ирокез, способ аутентификации на серверах. Вам нужно будет получить ключи сетки для него. Тогда вы сможете сгенерировать с его помощью весь заголовок x-request-auth.


0

Safeer Abbas
1 Мар 2021 в 04:53

Я использую httpclient WebApi для создания библиотеки API .net для использования с веб-службой REST.

Остальная служба возвращает JSON.

У меня проблема в том, что для одного запроса я могу получить разные форматы JSON.

Если запрос был успешным, я возвращаю массив JSON, который я создал для его хранения в строгом типе С#.

Использование метода ReadAsAsync< T > для извлечения его из содержимого.

Если в запросе указан неверный ключ API или произошла другая ошибка, остальная служба возвращает объект JSON с некоторыми свойствами, такими как статус = ошибка, поясняющее сообщение и т. д.

Я не могу просто использовать метод ReadAsAsync< T >, так как не знаю, какой формат возвращается. Я мало что знаю о библиотеке JSON linq, но есть ли способ поместить ответ JSON в какой-либо объект держателя JSON, а затем проверить, есть ли в нем статус = ошибка, а затем использовать правильную десериализацию для моего сильного типа.

Кажется, я могу сохранить его в объекте JRaw, но не знаю, куда идти дальше.

Большое спасибо.

Привет! Не могли бы вы показать логи графана-сервера?

Привет,

Да, конечно, вот несколько логов:

t = 2020-07-27T14: 38: 10 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 5 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 214 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «
t = 2020-07-27T14: 38: 10 + 0200 lvl = eror msg = «Ошибка аутентификации Zabbix» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка произошла на сервере, когда анализ текста JSON «.
t = 2020-07-27T14: 38: 10 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-27T14: 38: 10 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 5 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 180 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «
t = 2020-07-27T14: 44: 35 + 0200 lvl = eror msg = «Ошибка аутентификации Zabbix» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка произошла на сервере, когда анализ текста JSON «.
t = 2020-07-27T14: 44: 35 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-27T14: 44: 35 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 5 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 136 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «
t = 2020-07-27T15: 02: 21 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-27T15: 02: 21 + 0200 lvl = eror msg = «Запрос завершен» регистратор = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 1 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 132 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «
t = 2020-07-27T15: 02: 21 + 0200 lvl = eror msg = «Ошибка аутентификации Zabbix» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка произошла на сервере, когда анализ текста JSON «.
t = 2020-07-27T15: 02: 21 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-27T15: 02: 21 + 0200 lvl = eror msg = «Запрос завершен» регистратор = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 1 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 124 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «
t = 2020-07-27T15: 02: 25 + 0200 lvl = eror msg = «Ошибка аутентификации Zabbix» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка произошла на сервере, когда анализ текста JSON «.
t = 2020-07-27T15: 02: 25 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-27T15: 02: 25 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 13 orgId = 1 uname = xyz method = POST path = / api / datasources / 1 / resources / zabbix- api status = 500 remote_addr = xxxx time_ms = 116 size = 132 referer = » https: //grafana.xx/dashboard/new? editPanel = 2 & orgId = 1 «

Хорошо, спасибо за подробности, я постараюсь воспроизвести это.

Не могли бы вы также включить ведение журнала отладки в графане и журналах публикации? Интересно, какой метод api возвращает ошибку.

У меня мало информации в журнале отладки

t = 2020-07-28T14: 32: 38 + 0200 lvl = dbug msg = «Получена команда для обновления источника данных» logger = datasources url = https: //zabbix.lan/api_jsonrpc.php
t = 2020-07-28T14: 32: 38 + 0200 lvl = dbug msg = «Применение синтаксического анализа URL по умолчанию для этого типа источника данных» logger = datasource type = alexanderzobnin-zabbix-datasource url = https: //zabbix.lan/api_jsonrpc .php
t = 2020-07-28T14: 32: 39 + 0200 lvl = dbug msg = «Настройки источника данных изменены» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource id = 9.000 name = Zabbix org = 1.000
t = 2020-07-28T14: 32: 39 + 0200 lvl = dbug msg = «Инициализация источника данных» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource name = Zabbix org = 1.000 id = 9.000
t = 2020-07-28T14: 32: 39 + 0200 lvl = dbug msg = «Вызов запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource ds = Zabbix method = apiinfo.version
t = 2020-07-28T14: 32: 39 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-28T14: 32: 39 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 3 orgId = 1 uname = usergrafana method = POST path = / api / datasources / 9 / resources / zabbix- api status = 500 remote_addr = «» time_ms = 139 size = 132 referer = https: //grafana.lan/datasources/edit/9/
t = 2020-07-28T14: 32: 39 + 0200 lvl = dbug msg = «Вызов запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource ds = Zabbix method = apiinfo.version
t = 2020-07-28T14: 32: 39 + 0200 lvl = eror msg = «Ошибка запроса Zabbix API» logger = plugins.backend pluginId = alexanderzobnin-zabbix-datasource error = «Ошибка синтаксического анализа Недействительный JSON. Ошибка на сервере при анализе текста JSON «.
t = 2020-07-28T14: 32: 39 + 0200 lvl = eror msg = «Запрос завершен» logger = context userId = 3 orgId = 1 uname = usergrafana method = POST path = / api / datasources / 9 / resources / zabbix- api status = 500 remote_addr = «» time_ms = 85 size = 132 referer = https: //grafana.lan/datasources/edit/9/

@alexanderzobnin что еще нужно для отладки?

Привет,

Вот данные поста:
image

И ответ:
image

Мне удавалось повторить это в некоторых случаях, но я до сих пор не понимаю, почему это происходит. Дай мне немного больше времени, чтобы разобраться.

Есть ли у вас какой-нибудь прокси за Zabbix? Я увижу это, если запрошу zabbix.org:

# curl -k -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":10}' http://www.zabbix.org/zabbix/api_jsonrpc.php
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://zabbix.org/zabbix/api_jsonrpc.php">here</a>.</p>
<hr>
<address>Apache/2.2.29 (Linux/SUSE) Server at www.zabbix.org Port 80</address>
</body></html>

Если я добавлю флаг -L для отслеживания перенаправлений, то получу ту же ошибку:

# curl -k -L -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":10}' http://www.zabbix.org/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid Request.","data":"The received JSON is not a valid JSON-RPC Request."},"id":null}

Но если я запрошу https://zabbix.org/zabbix/api_jsonrpc.php напрямую, это сработает:

# curl -k -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":2}' https://zabbix.org/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":"4.2.0","id":2}

Получается, что прокси перенаправляет запрос с изменениями, что приводит к неправильному запросу.

Привет,

Нет, у меня нет прокси за zabbix.

Я пробовал ту же команду, что и ваша, с сервера grafana, с тем же URL-адресом, который указан в конфигурации источника данных:

curl -k -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":10}' https://zabbix.mydomain/api_jsonrpc.php

И это работает:

{"jsonrpc":"2.0","result":"5.0.1","id":10}

Это странно. Не могли бы вы проверить это на другом Zabbix сервере?

С zabbix.org вроде работает:

image

image

Итак, проблема связана с моим сервером zabbix? Перейду на 5.0.3, может это ошибка 5.0.1 …

Та же проблема после обновления в 5.0.3 …

Мой сервер zabbix находится на 4.2.6, и у меня такая же проблема.

Кстати, на какой ОС вы используете Grafana?

Кроме того, это может быть связано с SSL, поэтому попробуйте установить параметр Skip TLS Verify .

Моя Grafana работает на CentOS 7.8.

Та же ошибка при включении опции Skip TLS Verify . Но, кстати, этот параметр, похоже, не работает, потому что, если я изменю URL-адрес, установив IP вместо имени домена, он вернет следующую ошибку, даже если включена опция Skip TLS Verify

Post https://192.168.x.y/api_jsonrpc.php: x509: cannot validate certificate for 192.168.x.y because it doesn't contain any IP SANs

Та же ошибка, если я поставлю другое доменное имя (которое является псевдонимом длинного DN):

Post https://zabbix/api_jsonrpc.php: x509: certificate is valid for zabbix.mydomain, not zabbix

Таким образом, похоже, что опция Skip TLS Verify игнорируется

Сейчас я продолжаю отладку. Я нашел способ регистрировать все запросы на zabbix api. Я вижу, что запросы, поступающие от grafana к zabbix api, не имеют данных:

ACCEPT-ENCODING: gzip
CONTENT-TYPE: application/json
TRANSFER-ENCODING: chunked
USER-AGENT: Go-http-client/1.1
HOST: zabbix.mydomain


в то время как запросы, поступающие из другого приложения, имеют данные:

CONTENT-LENGTH: 277
CONTENT-TYPE: application/json
ACCEPT: */*
HOST: zabbix.mydomain

{"jsonrpc":"2.0","method":"trigger.get","params":{"monitored":true,"only_true":1,"min_severity":1,"sortfield":["lastchange"],"sortorder":"DESC","withLastEventUnacknowledged":true,"expandDescription":true,"selectHosts":["name"]},"id":1,"auth":"***"}

Заголовки тоже не те … Может это поможет?

Изменить: я обновил плагин до версии 4.0.0 (последней версии).

Это выглядит странно. Может это связано с go-http-клиентом. Я тоже это проверю.

Та же проблема после обновления до 4.0.0, zabbix 5.0.3 и grafana 7.1.5 (Centos 7.8). На версии 3.12.3 ошибки не было.

@Shmakovm вы используете https на сервере Zabbix?

@Shmakovm вы используете https на сервере Zabbix?

Да, я использую https с внутренним сертификатом ЦС.
Это то же самое, что я использовал с версией плагина 3.12.3, и все работало.

@Shmakovm вы использовали опцию Skip TLS Verify с 3.12? Я обнаружил, что это не работает с 4.0, потому что мне нужно реализовать его на стороне сервера.

Протестировано на нескольких экземплярах Zabbix.
1-й экземпляр v4 Zabbix (без прокси, без ssl) — Работает на Grafana
Второй экземпляр v5 Zabbix хлопотно (имеет Zabbix прокси , но это не связано с веб — интерфейсе, с собственно SSL сертификат подстановочные (купил один)) — Ошибки ,
3-й — Zabbix Appliance v5 прямо с веб-сайта Zabbix, без SSL нет проблем. — Работает на Grafana

Я также попробовал неработающий с протоколом HTTP (отключил https, похоже, это не устранило проблему).
Сертификат SSL настроен правильно (открытый ключ также содержит корневые общедоступные сертификаты)
Пропуск TLS Verify не помогает решить проблему.

Также я проверил журналы Zabbix, в нем указано 200 HTTP-кодов (журналы httpd), а не 500, как говорится на сайте Grafana (ошибки javascript разработчика Chrome).

Да, похоже, это не связано с проверкой сертификата SSL. Я попытался протестировать его на Zabbix 5.0.2 из официального контейнера докеров и добавил самозаверяющий сертификат. Я получаю эту ошибку при тестировании источника данных:

Post "https://localhost:8189/api_jsonrpc.php": x509: certificate signed by unknown authority

Если я добавлю InsecureSkipVerify в конфигурацию http-клиента, то все

Так как он работает с 3.12 (где grafana отправляет запрос), но не работает с 4.0 (где серверная часть плагина отправляет запрос), должна быть некоторая разница между тем, как grafana выполняет запрос, и тем, как плагин делает то же самое.

Но я все еще не могу воспроизвести эту ошибку, чтобы выяснить ее, поэтому любые подробности о вашей среде были бы очень полезны.

@Shmakovm вы использовали опцию Skip TLS Verify с 3.12? Я обнаружил, что это не работает с 4.0, потому что мне нужно реализовать его на стороне сервера.

Нет, не знал.

например, как работает завиток.

Annotation 2020-08-28 080841

Как вы добавили опцию InsecureSkipVerify ? Может, мы могли бы попробовать то же самое?

Что касается моего окружения:

Grafana (7.1.5) работает на:
Centos 7,8
локальный центр сертификации является доверенным

Zabbix (5.0.3) работает на:
Centos 7,8
httpd 2.4.6
Сертификат HTTP, подписанный локальным центром сертификации

Если вам нужна другая информация, просто скажите мне;)

@ mplm17 Я сделал это в исходниках 🙂 Все равно исправлю поддержку HTTP-опций. Было бы неплохо, если бы кто-то мог собирать следы HTTP-запросов, которые бэкэнд Grafana отправляет Zabbix.

Пробовал v6.6.1 (21bf8b71bc) grafana, все работает нормально. В нем указано, что версия Zabbix API: 5.0.3. Плагин Grafana Zabbix версии 3.10.5
По крайней мере, я совершенно уверен, что что-то не так со стороны кода плагина.

@alexanderzobnin Если бы кто-то мог собирать следы HTTP-запросов, которые бэкэнд Grafana отправляет Zabbix, было бы неплохо.
Zabbix 5.0.3 Grafana 7.1.5 Плагин 4.0.0
Консольный вывод
nwrdomvs01.zip
nwrdomvs01-1598601861971.log

@achupahin — это журналы браузера. Но мне нужны журналы запросов, которые отправляет бэкэнд-плагин. Собрать не так-то просто, нужно что-то вроде tcpdump или wirehark.

@Prefix да, это определенно проблема с плагином.

@achupahin — это журналы браузера. Но мне нужны журналы запросов, которые отправляет бэкэнд-плагин. Собрать не так-то просто, нужно что-то вроде tcpdump или wirehark.

Я пытаюсь сделать что-то подобное, но это непросто из-за уровня SSL …

@alexanderzobnin Я могу попробовать это сделать — если кто-нибудь поможет с фильтрами tcpdump.

@alexanderzobnin Вот он:

image

Вот еще 2 примера, которые хорошо работают, поэтому мы можем увидеть различия:

-с почтальоном:

image

-из другого клиента zabbix api:

image

С помощью этих выходных данных я попытался воспроизвести проблему на почтальоне, установив те же заголовки, что и в запросах графаны. Кажется, что если установлен заголовок Content-Length, он работает нормально, но если он не установлен, у нас ошибка синтаксического анализа …

Надеюсь, это поможет

@ mplm17 да, это очень полезно, большое спасибо!

Хорошо, попробовал решить. Может ли кто-нибудь проверить это и подтвердить, что ошибка исправлена? Вот встроенный пакет для всех платформ. Просто распакуйте его в папку плагинов grafana.

grafana-zabbix-8f70a0c.zip

@alexanderzobnin Да, работает.

у меня это тоже сработало.

Хорошо, попробовал решить. Может ли кто-нибудь проверить это и подтвердить, что ошибка исправлена? Вот встроенный пакет для всех платформ. Просто распакуйте его в папку плагинов grafana.

grafana-zabbix-8f70a0c.zip

Работа Zabbix 5.0.2 Grafana 7.1.5

Хорошо, попробовал решить. Может ли кто-нибудь проверить это и подтвердить, что ошибка исправлена? Вот встроенный пакет для всех платформ. Просто распакуйте его в папку плагинов grafana.

grafana-zabbix-8f70a0c.zip

Большое спасибо! У меня тоже работает;)

Хорошо, закрываем это. Исправление скоро будет доступно в следующем выпуске.

Была ли эта страница полезной?

0 / 5 — 0 рейтинги

Демо: db<>рабочий пример

Чтобы получить значение gridname, вам нужно расширить свой массив, а затем проверить каждый его элемент:

SELECT
    userid,
    elems ->> 'layoutname' AS layoutname                  -- 3
FROM
    mytable,
    json_array_elements(defaultdata) elems                -- 1
WHERE userid = 'user-1' AND elems ->> 'gridname' = 'RT'   -- 2
  1. json_array_elements() расширяет ваш массив JSON до одной строки для каждого элемента.
  2. Развернутые элементы можно проверить на наличие соответствующих значений и использовать в качестве фильтра.
  3. После этого вы сможете получить свои данные

Я поигрался с компаратором @>. Я обнаружил, что ваш способ был неплох (при условии, что вы использовали бы тип jsonb вместо json). @> может сделать работу:

SELECT 
    *
FROM mytable
WHERE defaultdata @> '[{"gridname":"RT"}]'

Демо

Это возвращает весь массив, а не только элемент, содержащий это. Это означает, что если вы будете использовать его таким образом, он вернет массив, в котором любой элемент содержит эту часть.

Чтобы получить один элемент, вам нужно расширить его, что вы уже сделали. Ваша единственная проблема заключалась в том, что вы использовали не расширенные элементы в предложении WHERE, а исходные данные. Использование расширенных элементов приведет к этому запросу:

SELECT 
    userid,
    elems ->> 'layoutname' AS layoutname
FROM mytable,
    jsonb_array_elements(defaultdata) elems
WHERE userid = 'user-1' AND elems @> '{"gridname":"RT"}'

Демо

И это прекрасно работает!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка авторизации steam user info vac check timed out
  • Ошибка автономки webasto е34