我试图在OM2M中向IN-CSE发送CoAP消息,但是IN-CSE打印了NullpointerException,就像我上传的图片一样。
我通过修改OM2M源代码中的CoAPServer类解决了这个问题。
我认为问题是" to = coap:// localhost /〜/ in-cse"所以我修改了requestPrimitive.setTo(request.getURI()) 在CoAPServer类中请求.Primivice.setTo(request.getOptions()。getURIString())。
我认为这种方式不好,我不知道如何解决问题而不修改代码...
如果有人知道其他任何方式,请告诉我。
由于
- 追加
我找到了删除错误的解决方案。
首先,我检查了发布的OM2M版本。我试图将CoAP消息发送到旧版本(1.0.0)。然后很好地转移了没有问题。但最新版本有错误。所以我比较了两个代码。(我专注于org.eclipse.om2m.binding.coap中的CoapServer.java)
在Coapserver.java中,service()创建一个requestPrimitive对象并传输到Router.java。它将targetId作为"到" requestPrimitive对象中的变量通过setTargetId()(setTargetId()在1.0.0版本中调用setTo())。但在最新版本中,它将返回的字符串getURI()作为"到" requestPrimitive对象中的变量。 (在最新版本中,除非我使用它,否则它似乎不使用targetId。)
targetId包含" / in-cse"和getURI()返回" coap:// localhost /〜/ in-cse"。
最新版本删除了reqeustPrimitive类中的setTargetId()。所以当我将setTo(getURI())修改为setTo(targetId)时,传输得很好。
这是最新版本的错误吗?或者我做错了什么?