我正在与Orion Context Broker合作,并且我尝试添加新订阅但是我收到错误,即使我提供了一个错误,回调也会丢失。
以下是我拥有的实体
$ 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"}
答案 0 :(得分:1)
首先,创建实体的请求(POST / v2 / entities)不接受实体向量,而是接受单个对象。该请求应该给出错误(不幸的是,代理响应 JSON解析错误,这不是100%正确)。将请求更改为仅创建Room1,如果要创建Room2,则添加另一个请求 现在,订阅的创建看起来很不错。我按照你的确切要求进行了测试,效果很好 现在,为了尝试理解您的问题,我请您在问题描述中添加一些信息:
curl localhost:1026/version
) - 您可能希望更新到更新的版本,以防它太旧(1.2.0是最新版本)。 cat /tmp/contextBroker.log
)。如果您自己启动代理,请使用所有跟踪启动它(使用选项:-t 0-255 -logLevel DEBUG
)最后,抱歉延误,休假时间......