我正在两台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上运行才能发送上下文代理消息?
答案 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正在侦听的主机(和端口)建立网络连接。