1

我是 onem2m 的新手,我使用 IoTDM Karaf 实现来学习初始步骤。我还使用来自同一个项目的邮递员包作为学习工具。我也可以从我自己的代码(html、ajax、php)中进行 CRUD 操作和其他直接操作。我已经浏览了规范文档(虽然不是完整的捆绑包,但相当多)和开发者指南示例的家庭照明和实现示例。

我现在卡住的地方是我已经成功注册订阅,通知uri“nu”指向同一网络上不同apache服务器中的php。Postman / Google Rest Client 可以向其发布数据。我什至添加了一个 CORS 标头以避免任何疑问。我已经指定了“nu”:http//full IP/phpfile.php。然后我从 Postman 创建一个内容实例。我期待我的 php 被调用。这种期望有效吗?

我只是将帖子数据转储到我的 /var/www/html 文件夹中的文件中。这按预期工作。我测试了编写一个小 html 并从另一台服务器运行它。所以这不是 CORS 问题或文件系统访问问题。通知实施到位了吗?我的兴趣不在物联网边缘设备端,而是在我想从设备收集数据的后端。我没有看到任何示例详细说明通知处理程序的实现。

任何指示,即使不是直接的答案也会有所帮助。提前致谢。

4

2 回答 2

0

创建<subscription>资源时,托管 CSE 可能会发送通知以执行订阅验证。此验证的接收者是<subscription>中设置的notificationURI。通过这种方式,CSE 可以确定接收者确实是能够并且应该处理通知的人。

为此,在创建<subscription>资源之前,通知接收器(您的 PHP 脚本)必须正在运行并正确回答验证请求。否则,CSE 不得向给定的 URI 发送通知。

您的通知接收器是否已启动并运行,它是否正确回答了验证请求?

另见“TS-0004 - 服务层核心协议规范”,章节“7.5.1.2.2 <subscription> 资源通知”。

更新

通知服务器应检查vrq元素的 POST 请求的内容。这表示验证请求。如果服务器想要接受请求,它应该返回 HTTP 错误代码“200”以及响应头“X-M2M-RSC”,值为“2000”。

于 2019-02-07T19:06:59.227 回答
0

大跃进。我让通知处理程序点击我的回调 php。首先,我使用了 ODL IoTDM 的“碳”版本。然后我必须安装功能 odl-iotdm-onem2m。这个带有一个 odl-onem2m-notifier,我认为这是旧服务器中缺少的组件。现在,当我注册订阅并添加内容实例时,我的 php 会被调用。

我没有看到来自@akr 的请求验证和其他类似提示。我想我必须为此找到一个更新的服务器实现。但我想,这个问题是有答案的。

非常感谢@akr 的耐心和回复。

于 2019-02-12T07:10:02.170 回答