使用Eclipse OM2M创建AE时遇/in-cse资源不存在问题求助
问题分析与解决办法
核心错误点
1. 请求URL不正确
创建AE资源时,目标路径必须指向CSEBase资源(即你GET响应中的<m2m:cb>节点),而非直接使用CSE标识符路径。从响应内容可知,CSEBase的资源名称(rn属性)是in-name,因此正确的POST请求URL应为:
http://localhost:8080/~/in-cse/in-name
你之前的URL末尾带了多余的?=,且未指定CSEBase的资源名称,导致系统无法识别正确的父资源路径,从而返回AE resource /in-cse not found错误。
2. XML请求体格式不规范
你的请求XML存在多处格式问题,会触发解析错误:
- 标签名内不能包含空格:比如
<m2m: ae>应改为<m2m:ae>,</ api>应改为</api> - 标签内容的冗余空格:
<rr> false </ rr>应改为<rr>false</rr>,否则系统可能将空格识别为无效值
3. GET请求的冗余数据(非致命,但不符合规范)
你发送的GET请求携带了POST用的XML数据,虽然此次请求成功,但GET请求不应包含请求体,属于不规范操作。
修正后的POST请求
curl --request POST \ --url 'http://localhost:8080/~/in-cse/in-name' \ --header 'Content-Type: application/xml' \ --header 'x-m2m-origin: admin:admin' \ --data '<m2m:ae xmlns:m2m="http://www.onem2m.org/xml/protocols" rn="MY_SENSOR"> <api>app-sensor</api> <lbl>Type/sensor Category/temperature Location/home</lbl> <rr>false</rr> </m2m:ae>'
额外验证建议
可以先发送GET请求确认CSEBase路径的有效性:
curl --request GET \ --url 'http://localhost:8080/~/in-cse/in-name' \ --header 'Content-Type: application/xml' \ --header 'x-m2m-origin: admin:admin'
如果能正常返回CSEBase的XML数据,说明路径正确,再执行POST创建AE操作。
内容的提问来源于stack exchange,提问作者Jrod
相关产品推荐
相关产品推荐

