Orion Context Broker, формат подписки JSON

Я работаю над простой подпиской на contextBroker, и я подписываюсь на свое приложение node.

контекст подписки

После этого он возвращает статус 200 OK и вставляет строку в mongo, orion db.

Проблема заключается в том, что поле в формате коллекции csubs имеет значение «XML», а в приложении моего узла, когда я регистрирую тело, которое contextBroker отправляет, оно регистрирует это журналы с подписанного узла

Пустое тело. Затем, когда я меняю формат в монго на «JSON», все работает нормально. Тело возвращает данные от contextBroker.

Мой вопрос в том, как заставить contextBroker вставлять по умолчанию «JSON» в поле формата.

ОБНОВЛЕНИЕ:

Версия contextBroker 0.26.1.

ОБНОВЛЕНИЕ

Подписка на контекст, запрос + тело и ответ

Здесь я попытался с attributeFormat=object заставить его вставить «JSON» в поле формата, но это все равно «XML».


person Jericho    schedule 16.12.2015    source источник
comment
Не могли бы вы отредактировать свой пост, добавив информацию о том, какую версию Orion contextBroker вы используете (т. е. результат выполнения команды curl <host>:<port>/version), пожалуйста?   -  person fgalan    schedule 17.12.2015
comment
Кроме того, убедитесь, что в коллекции csubs нет предыдущих подписок, которые могут создавать помехи для теста.   -  person fgalan    schedule 17.12.2015
comment
Не могли бы вы также включить в свой пост 1) строку HTTP-запроса (глагол + URL-адрес) и заголовки HTTP, включенные в вашу операцию (моментальный снимок показывает только полезную нагрузку) и 2) ответ, который вы получаете на операцию подписки, пожалуйста? Спасибо!   -  person fgalan    schedule 17.12.2015


Ответы (1)


Orion Context Broker выбирает кодировку уведомлений на основе кодировки, используемой для ответа операции контекста подписки, связанной с такими уведомлениями. Обратите внимание, что в этом случае ответ находится в формате XML, поэтому вы получаете уведомления в формате XML.

Я предполагаю, что вы получаете XML в ответе, потому что HTTP-заголовок Accept не используется в запросе контекста подписки, который неявно равен Acccept: */*, что означает, что у клиента нет предпочтений в отношении кодирования. В этой ситуации Orion выбирает XML (по устаревшим причинам для обеспечения обратной совместимости со старыми версиями Orion, поддерживающими только XML).

Таким образом, есть два возможных выхода из этой ситуации:

  • (Рекомендуется) Включите Accept: application/json в запрос контекста подписки.
  • Добавьте ?notifyFormat=json, чтобы принудительно отправлять уведомления в формате JSON (например, POST /v1/subscribeContext?notifyFormat=json), независимо от кодировки, используемой для ответа на операцию контекста подписки.

Примечание: подписки ONTIMEINTERVAL (та, что показана на скриншоте) устарели. Таким образом, вам рекомендуется прекратить их использование, вместо этого используя ONCHANGE.

person fgalan    schedule 20.12.2015