Ошибка авторизации на сервере 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"}'

Демо

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

My Kong

Trending with Friends


Activity Feed


Register or sign in to start receiving activity updates from around Kongregate!

Forums

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

King's Bounty: Legions

от NIVAL, INC.

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

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

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

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

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

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

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

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

Торин Оакеншильд


9 лет назад

Уважаемые #@$&🤬! Две проблемы. 1) при распаковке кэша пишет: «неверная контрольная сумма в com.kranx.kbl/files/UnityCache/Shared/ce6d41768f427132a7068ff1532395bda0b917a1/CAB-788a41c5b606b476b8fdf93b7bd35549». Далее, не взирая на это, устанавливаем apk и тут… 2) докачивает ещё 40,9 метра, после чего запускается, объявляет, что версия устарела и выыкидывает в PlayMarket, где нужно согнать ещё 302 метра «обновления». На фига тогда качать отсюда, если проще и быстрее брать сразу с Маркета?

0

  • Ошибка авторизации на сайте госзакупок
  • Ошибка авторизации на портале эсчф не найден сертификат
  • Ошибка авторизации на портале электронных счетов фактур ндс
  • Ошибка авторизации на портале госуслуг
  • Ошибка авторизации на налог ру через госуслуги