0

我尝试在 OM2M 中向 IN-CSE 发送 CoAP 消息,但 IN-CSE 打印 NullpointerException,就像我上传的图片一样。

我通过修改 OM2M 源代码中的 CoAPServer 类解决了这个问题。

我认为问题是“to=coap://localhost/~/in-cse”所以我将 requestPrimitive.setTo(request.getURI()) 修改为 request.Primivice.setTo(request.getOptions().getURIString())在 CoAPServer 类中。

我觉得这种方式不好,不修改代码不知道怎么解决……

如果有人知道其他方法,请告诉我。

谢谢

-- 追加

我找到了消除错误的解决方案。

首先,我检查了发布的 OM2M 版本。我尝试将 CoAP 消息发送到旧版本(1.0.0)。然后它被很好地转移没有问题。但最新版本有错误。所以我比较了这两个代码。(我主要关注 org.eclipse.om2m.binding.coap 中的 CoapServer.java)

在 Coapserver.java 中,service() 创建一个 requestPrimitive 对象并传输到 Router.java。它在 1.0.0 版本中通过 setTargetId() 将 targetId 作为“to”变量放入 requestPrimitive 对象中(setTargetId() 调用 setTo())。但在最新版本中,它将返回的字符串 getURI() 作为“to”变量放在 requestPrimitive 对象中。(在最新版本中,除非我使用它,否则它似乎不使用 targetId。)

targetId 包含“/in-cse”,getURI() 返回“coap://localhost/~/in-cse”。

在此处输入图像描述

在此处输入图像描述

最新版本删除了 reqeustPrimitive 类中的 setTargetId()。所以当我将 setTo(getURI()) 修改为 setTo(targetId) 时,它转移得很好。

在此处输入图像描述

在此处输入图像描述

这是最新版本的bug吗?还是我做错了什么?

4

0 回答 0