Подписка в Fiware Orion Context Broker

Я пытаюсь отправить подписку на свой экземпляр Orion Context Broker. Я отправляю этот JSON:

{
  "duration": "P1M",
  "reference": "http://130.206.127.23:1026/ngsi10/notifyContext",
  "notifyConditions": [
    {
      "condValues": [
        "PT10s"
      ],
      "type": "ONTIMEINTERVAL"
    }
  ],
  "entities": [
    {
      "id": "1.0",
      "type": "Capsule",
      "isPattern": "false"
    }
  ],
  "attributes": [
    "temperature"
  ]
}

И я получаю следующее сообщение:

<subscribeContextResponse>
  <subscribeError>
    <errorCode>
      <code>400</code>
      <reasonPhrase>Bad Request</reasonPhrase>
      <details>JSON Parse Error: <unspecified file>(1): invalid escape sequence</details>
    </errorCode>
  </subscribeError>
</subscribeContextResponse>

Я помещаю все атрибуты, которые он использует, в документация. Но в веб-семинаре веб-семинар Orion Context Broker - демонстрационная часть 2 Я вижу другой атрибут с именем Throttling, но не вижу в документации.

Что я делаю плохо?

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


person jjmartinez    schedule 11.12.2014    source источник


Ответы (1)


Я проверил ваш запрос (скопировал), и вот результат (с Orion 0.17.0).

Команда (вы можете проверить, что полезная нагрузка именно та, которую вы использовали):

(curl localhost:1026/v1/subscribeContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
  "duration": "P1M",
  "reference": "http://130.206.127.23:1026/ngsi10/notifyContext",
  "notifyConditions": [
    {
      "condValues": [
        "PT10s"
      ],
      "type": "ONTIMEINTERVAL"
    }
  ],
  "entities": [
    {
      "id": "1.0",
      "type": "Capsule",
      "isPattern": "false"
    }
  ],
  "attributes": [
    "temperature"
  ]
}
EOF

Результат:

{
    "subscribeResponse": {
        "duration": "P1M", 
        "subscriptionId": "5489e0bfe5007d3271ab5a61"
    }
}

Таким образом, мой тест прошел нормально, поэтому я склонен думать, что проблема связана с кодировкой, и она не отображается в вашем сообщении с вопросом, например использование (неверно) вместо " и тому подобное.

РЕДАКТИРОВАТЬ: другой распространенный источник проблем - использование файлов сценариев, содержащих запрос curl к CB в «тексте DOS» (обычно из-за использования текстовых редакторов DOS / Windows). Это можно легко обнаружить, если вы запустите file yourfile.sh и получите следующее

yourfile.sh: ASCII text, with CRLF line terminators

вместо следующего

yourfile.sh: ASCII text

Решение довольно простое: преобразовать файл в «текст Unix», например, с помощью инструмента командной строки dos2unix.

person fgalan    schedule 11.12.2014
comment
Я задал вопрос о проблеме с запросом подписки. По другому вопросу (например, что мне нужно поместить в ссылочный атрибут? Нужна ли мне программа, выполняемая на сервере, чтобы получать информацию о моей подписке? Могу ли я получить программу из ресурсов Orion Context Broker для выполнения этой задачи?) Желательно, чтобы вы создавали новый вопрос в SOF, учитывая, что он не зависит от текущего, пожалуйста. - person fgalan; 11.12.2014
comment
Проблема в том, что я не вижу, где ошибка в этом ответе. Я поместил код JSON в jsoneditoronline.org, и документ хорошо отформатирован. И я создаю JSON так же, как остальную часть JSON для другой общей операции OCB :( - person jjmartinez; 11.12.2014
comment
Возможно, вы можете создать .sh, чтобы воспроизвести проблему, загрузить его в какое-нибудь общественное место (dropbox?) И передать мне URL-адрес, чтобы я мог попытаться воспроизвести проблему с его помощью. - person fgalan; 12.12.2014
comment
Хорошо, проблема в ссылке на атрибут. Я пишу на Java эту строку: cabecera.put (ссылка, 130.206.127.23:1026/ngsi10/notifyContext); И когда я отправляю информацию, я отправляю http: \ / \ / 130.206.127.23:1026\/ngsi10\/notifyContext - person jjmartinez; 12.12.2014
comment
Как мне передать URL? Я пытаюсь использовать String, и у меня есть эта проблема. Также с объектом URL у меня ошибка :( - person jjmartinez; 12.12.2014
comment
Я думаю, что это довольно общий вопрос Java, который заслуживает отдельного вопроса в StackOverflow (или, вероятно, он уже был задан и отвечен). - person fgalan; 12.12.2014
comment
Конечно, но я не знаю, какие OCB ожидаются в этом атрибуте: в строке? URL, int? - person jjmartinez; 12.12.2014
comment
На уровне JSON ссылка должна быть строкой, соответствующей формату URL в схемах протокола http или https (во втором случае вы должны использовать дополнительный компонент в качестве ретранслятора уведомлений с именем Rush). - person fgalan; 12.12.2014
comment
Большое спасибо за вашу поддержку!! - person jjmartinez; 12.12.2014
comment
пожалуйста, прочтите ответы на мой вопрос stackoverflow.com/questions/27447101/ - person jjmartinez; 12.12.2014
comment
Я пытаюсь сделать это вручную, как вы, внутри моей виртуальной машины, и у меня такая же ошибка. Где я могу увидеть журнал ContextBroker ?? Спасибо! - person jjmartinez; 15.12.2014
comment
Загляните в раздел журналов в Руководство по установке и администрированию Orion и в каталог BROKER_LOG_DIR в / etc / sysconfig / contextBroker - person fgalan; 15.12.2014
comment
Сейчас я пытаюсь использовать пример forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/ Orion_Context_Broker -_User_and_Programmers_Guide # ONCHANGE, и у меня такая же ошибка - person jjmartinez; 15.12.2014