2015-12-16 2 views
3

Я работаю над простой подпиской на contextBroker, и я подписываю свое приложение на узле.Орион Контекстный брокер, формат подписки «JSON»

subscribeContext

После того, что она возвращает 200 статус OK, и вставить строку в Монго, ORION дБ.

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

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

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

UPDATE:

Версия contextBroker является 0.26.1

UPDATE

The subscription to the context, the request + body, and the response

Здесь я попытался с attributeFormat = объект, чтобы сделать его вставить "JSON" в поле формата, но оно по-прежнему «XML»

+0

Не могли бы вы отредактировать свое сообщение, чтобы добавить информацию о том, какую версию контекстного браузера Orion вы используете (т. Е. Результат команды «curl : /version'), пожалуйста? – fgalan

+0

Кроме того, убедитесь, что в коллекции 'csubs' нет предыдущих подписей, которые могли бы добавить« шум »к тесту. – fgalan

+0

Не могли бы вы также включить в свой пост 1) строку запроса HTTP (глагол + URL) и заголовки HTTP, включенные в вашу операцию (моментальный снимок показывает только полезную нагрузку), и 2) ответ, который вы получаете на операцию suscribie, пожалуйста? Благодаря! – fgalan

ответ

0

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

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

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

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

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

Смежные вопросы