Eclipse Ditto - создание соединения MQTT - сбой с недопустимым ответом json 400

Установление соединения с конечной точкой 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 недействителен?

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

[EDIT] Прежде всего "-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 ответ

Решение

Думаю, проблема связана с завитками. Посмотрите, как отправить данные json из файла: /questions/23449252/kak-peredat-poleznuyu-nagruzku-cherez-json-fajl-dlya-curl/23449256#23449256

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

Другие вопросы по тегам