【问题标题】:No JSON object could be decoded- orion context broker没有 JSON 对象可以被解码——orion 上下文代理
【发布时间】:2015-04-14 13:25:49
【问题描述】:

我正在两台 CentOS 6.6 机器上尝试 orion 上下文代理通信。在我做的目标机器上:

./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 上运行才能发送上下文代理消息?

【问题讨论】:

    标签: fiware fiware-orion


    【解决方案1】:

    我认为您的测试存在“概念性”误解。您正在将 updateContext 发送到 1028,这 不是 CB 的端口(应该处理 updateContext 消息的端口)而是累加器端口(其目的是处理 CB 由于 updateContext 消息而发送的 notifyContext 消息,但自己处理 updateContext 消息)。

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

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

    • 200 码是不是表示它正在成功创建 Room2? 累加器报告的 200 号只是表示累加器已收到并确认消息(任何消息,假设累加器是仅用于测试的“虚拟”应用程序,它没有对其进行任何实际处理)。

    • 为什么我会收到无法解码 JSON 的消息? 尝试在 curl 命令行中删除 | python -mjson.tool

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

    【讨论】:

    • 所以你的意思是我应该针对端口 1026 而不是端口 1028?因为我在 CentOS 中无法在防火墙中打开端口 1026 - 我得到了一个叫做 cap 而不是 1026 的东西。有没有办法更改默认的上下文代理端口?
    • 您可以使用命令行选项--port NN 更改 Orion 正在使用的端口。另外,不要担心“cap”这个名字。这只是操作系统从某个 conf 文件中使用的命名约定。您可以放心地忽略它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多