2016-08-08 2 views
1

Я работаю с Контекстным брокером Ориона, и я пытаюсь добавить новую подписку, но я получаю сообщение об ошибке, что обратный вызов отсутствует, хотя я предоставили один.FIWARE - Контекстный Брокер Ориона - Невозможно создать подписку - Обратный звонок отсутствует

Вот объекты, которые у меня есть

$ curl localhost:1026/v2/entities -s -S --header 'Accept: application/json' | python -mjson.tool 
[ 
    { 
     "id": "Room1", 
     "pressure": { 
      "metadata": {}, 
      "type": "Integer", 
      "value": 720 
     }, 
     "temperature": { 
      "metadata": {}, 
      "type": "Float", 
      "value": 23 
     }, 
     "type": "Room" 
    }, 
    { 
     "id": "Room2", 
     "pressure": { 
      "metadata": {}, 
      "type": "Integer", 
      "value": 711 
     }, 
     "temperature": { 
      "metadata": {}, 
      "type": "Float", 
      "value": 21 
     }, 
     "type": "Room" 
    } 
] 

А вот вызов, чтобы создать новую подписку и последующую ошибку:

$ curl -v localhost:1026/v2/subscriptions -s -S --header 'Content-Type: application/json' \ 
>  -d @- <<EOF 
> { 
> "description": "A subscription to get info about Room1", 
> "subject": { 
>  "entities": [ 
>  { 
>   "id": "Room1", 
>   "type": "Room" 
>  } 
>  ], 
>  "condition": { 
>  "attributes": ["temperature"] 
>  } 
> }, 
> "notification": { 
>  "http": { 
>  "url": "http://localhost:1028/accumulate" 
>  }, 
>  "attrs": [ 
>  "temperature", 
>  "pressure" 
>  ] 
> }, 
> "expires": "2040-01-01T14:00:00.00Z", 
> "throttling": 5 
> } 
> EOF 
* Hostname was NOT found in DNS cache 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 1026 (#0) 
> POST /v2/subscriptions HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: localhost:1026 
> Accept: */* 
> Content-Type: application/json 
> Content-Length: 417 
> 
* upload completely sent off: 417 out of 417 bytes 
< HTTP/1.1 400 Bad Request 
< Connection: Keep-Alive 
< Content-Length: 58 
< Content-Type: application/json 
< Date: Mon, 08 Aug 2016 10:11:39 GMT 
< 
* Connection #0 to host localhost left intact 
{"error":"BadRequest","description":"callback is missing"} 

ответ

1

в первую очередь, просьба создавать объекты (POST/v2/entity) не принимает вектор объектов, а один единственный объект. Этот запрос должен дать ошибку (к сожалению, брокер отвечает JSON Parse Error, который не соответствует 100%). Измените запрос на создание только Room1 и добавьте другой запрос, если вы хотите также создать Room2.
Теперь создание подписки выглядит хорошо. Я проверил тест с вашим точным запросом, и он работал нормально.
Теперь, чтобы попытаться понять вашу проблему, я прошу вас, чтобы добавить некоторую информацию к описанию Вашего вопроса:

  • Какую версию контекстного Orion брокера вы используете? (используйте: curl localhost:1026/version) - возможно, вы захотите перейти на более новую версию, если она слишком старая (1.2.0 - последняя версия).
  • Следы, которые производит ваш брокер при получении запроса на создание подписки. (использование: cat /tmp/contextBroker.log). Если вы начинаете брокер самостоятельно, начните его со всеми следами на (варианты использования: -t 0-255 -logLevel DEBUG)

Наконец, извините за задержку, время отпуска ...

+0

Параметр 'v2/entities' запроса является GET а не POST, это записи, которые я уже создал, возвращенные из системы. '0.28.0-next' - номер версии. –

+0

Обновлен до версии '1.2.0', и проблема решена. Спасибо за помощь. –

+0

А, это было ПОЛУЧИТЬ ... ОК, моя ошибка, я неправильно понял. Счастлив, что новая версия брокера решила проблему :-) – kzangeli

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