没有JSON对象可以解码 - orion上下文代理

时间:2015-04-14 13:25:50

标签: fiware fiware-orion

我正在两台CentOS 6.6机器上尝试orion context broker通信。在目标机器上我做了:

./accumulator-server.py 1028 /accumulate mywebpage.lan on

在我的本地机器上,我做了:

[DevF12@localhost ~]$ (curl mywebpage.lan:1028/v1/updateContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d @- | python -mjson.tool ) <<EOF
> {
>     "contextElements": [
>         {
>             "type": "Room",
>             "isPattern": "false",
>             "id": "Room2",
>             "attributes": [
>             {
>                 "name": "temperature",
>                 "type": "float",
>                 "value": "777"
>             },
>             {
>                 "name": "pressure",
>                 "type": "integer",
>                 "value": "711"
>             }
>             ]
>         }
>     ],
>     "updateAction": "APPEND"
> }
> EOF

目标机器上的结果是:

POST http://mywebpage.lan:1028/v1/updateContext
Content-Length: 456
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: mywebpage.lan:1028
Accept: application/json
Content-Type: application/json

{    "contextElements": [        {            "type": "Room",            "isPattern": "false",            "id": "Room2",            "attributes": [            {                "name": "temperature",                "type": "float",                "value": "777"            },            {                "name": "pressure",                "type": "integer",                "value": "711"            }            ]        }    ],    "updateAction": "APPEND"}=======================================

192.168.1.11 - - [14/Apr/2015 15:07:36] "POST /v1/updateContext HTTP/1.1" 200 -

我从本地机器获得的信息是:

No JSON object could be decoded

那么,这一切意味着什么?

1。 200代码是否说它成功创建了Room2?

2。为什么我无法解码JSON?

第3。所有这些都提出了另一个问题,这是否意味着气象站described in my previous post也必须在CentOS上运行才能发送上下文代理消息?

1 个答案:

答案 0 :(得分:0)

我认为你的测试中存在“概念上的”误解。您正在将updateContext发送到1028,它是 CB的端口(应该处理updateContext消息的那个)但是累加器端口(其目的是由于updateContext消息而由CB发送的进程notifyContext消息,但处理updateContext消息本身。)

通常,Orion Context Broker默认在端口1026中运行。

考虑到这一点,具体答案是:

  • 200代码是说成功创建了Room2吗?累加器报告的200号只是意味着累加器已收到并确认一条消息(任何消息,假设累加器是一个仅用于测试的“虚拟”应用程序,它没有对此进行任何实际处理。

  • 为什么我无法解码JSON呢?尝试删除curl命令行中的| python -mjson.tool

  • 所有这些都提出了另一个问题,这是否意味着我在上一篇文章中描述的气象站也必须在CentOS上运行才能发送上下文代理消息?不确定在你的情况下,“气象站”,但如果你的意思是客户端发送updateContext到CB,它不需要在CentOS中运行。客户端的唯一要求是与Orion API兼容,并且与Orion正在侦听的主机(和端口)建立网络连接。