Eclipse Ditto - создание MQTT-соединения - ошибка с неверным ответом json 400 - PullRequest
0 голосов
/ 13 января 2020

Установление соединения с конечной точкой MQTT 3.1.1 в соответствии с описанием здесь и Оперативные команды Devops приводят к неверному ответу json 400. Даже пример MQTT-Bidirectional получает отказ от 400. Вот почему я публикую этот вопрос здесь, чтобы получить подсказки о том, что я в данный момент делаю неправильно, и что я могу сделать, чтобы правильно помочь другим работать в том же номере. Вот мой запрос скручивания:

    gd@gd:~/ditto/mosquitto$ curl -X POST 'http://{ditto-url}/devops/piggyback/connectivity?timeout=10000' -u devops:foobar -H 'Content-Type: application/json' -d createMQTT_connection.json
{"status":400,"error":"json.invalid","message":"Failed to parse JSON string 'createMQTT_connection.json'!","description":"Check if the JSON was valid (e.g. on https://jsonlint.com) and if it was in required format."}

Подсказка, чтобы проверить мой json файл, возвращает мне правильность моего json.

Вот как выглядит мой json файл в настоящее время как:

{

"targetActorSelection": "/system/sharding/connection",
"headers": {
"aggregate": false
},
"piggybackCommand": {
    "type": "connectivity.commands:createConnection",
    "connection": {
          "id": "mqtt-example-connection-123",
          "name": "mmqtt-example-connection-123",
          "connectionType": "mqtt",
          "connectionStatus": "open",
          "failoverEnabled": true,
          "uri": "tcp://{mqtt-broker-url}:1883",
          "sources": [
            {
              "addresses": [
            "{ditto-url}/#"
              ],
              "authorizationContext": ["nginx:ditto"],
              "qos": 0,
              "filters": []
            }
          ],
          "targets": [
            {
              "address": "{ditto-url}/{{ thing:id }}",
              "topics": [
            "_/_/things/twin/events"
              ],
              "authorizationContext": ["nginx:ditto"],
              "qos": 0
            }
          ]
        }
     }
}

Кто-то понял, почему этот json недействителен?

Спасибо за поддержку и советы по решению этой проблемы!

[ПРАВИТЬ] Во-первых, «-f» имеет больше смысла для запроса curl:

curl -X POST -u devops:foobar 'http://{ditto-url}:8080/devops/piggyback/connectivity?timeout=10000' -f createMQTT_connection_1.json
curl: (22) The requested URL returned error: 400 Bad Request
curl: (6) Could not resolve host: createMQTT_connection_1.json

Во-вторых, здесь обновление json (с показанным выше результатом)

{
    "targetActorSelection": "/system/sharding/connection",
    "headers": {
        "aggregate": false
    },
    "piggybackCommand": {
        "type": "connectivity.commands:createConnection",
        "connection": {
            "id": "mqtt-example-connection-123",
            "connectionType": "mqtt",
            "connectionStatus": "open",
            "failoverEnabled": true,
            "uri": "tcp://{MQTT-Broker-url}:1883",
            "sources": [{
                "addresses": ["ditto-tutorial/#"],
                "authorizationContext": ["nginx:ditto"],
                "qos": 0,
                "filters": []
            }],
            "targets": [{
                "address": "ditto-tutorial/{{ thing:id }}",
                "topics": [
                "_/_/things/twin/events",
                "_/_/things/live/messages"
                ],
                "authorizationContext": ["nginx:ditto"],
                "qos": 0
            }]
        }
    }
}

1 Ответ

1 голос
/ 13 января 2020

Я думаю, что проблема, с которой вы сталкиваетесь, связана с завитком. Пожалуйста, посмотрите здесь, как отправить json данные из файла: { ссылка }

Кажется, что @ отсутствует в вашем случае при указании местоположения файла.

...