我知道CoAP定义了一些可以包含在发送请求中的选项,每个选项都有自己的编号。 CoAP uri请求的结构如下:
coap-URI =" coap:" " //"主持人[":" path] abempty ["?"查询]
其中包括一些选项,如:Uri-Host,Uri-Port,Uri-Path和Uri-Query,每个选项都有自己的编号,例如:Uri-Host为3,Uri Path为11。 ......我想为此CoAP请求添加更多额外选项,例如一些选项编号256,257 ...我该怎么做?
先谢谢你
子
答案 0 :(得分:1)
我设法通过了选项号256。
CoapClient client = new CoapClient(...);
Request request = new Request(CoAP.Code.GET, CoAP.Type.NON);
OptionSet optionSet = new OptionSet();
optionSet.addOption(new Option(256, "admin:admin"));
request.setOptions(optionSet);
client.advanced(request); // or async version
client.shutdown();
资源:
@Override
public void handleGET(CoapExchange exchange) {
OptionSet optionSet = exchange.advanced().getRequest().getOptions();
List<Option> options = optionSet.asSortedList();
options.stream()
.filter(o -> o.getNumber() == 256)
.findFirst()
.ifPresent(o -> System.err.println(o.getNumber() + " " + o.getStringValue()));
}
输出:
256 admin:admin
但是,选项号256可能不是一般的正确选择:
RFC 7252 The Constrained Application Protocol (CoAP). 12.2. CoAP Option Numbers Registry
IANA对此子注册表未来添加的政策是分开的 分为三层如下。范围为0..255保留 IETF定义的选项(IETF审核或IESG批准)。该 范围256..2047保留用于公共常用选项 规格(要求规格)。 2048..64999的范围是 对于所有其他选项,包括私人或特定于供应商的选项, 进行指定专家审查,以帮助确保 选项语义是正确定义的。两者之间的选项编号 65000和65535(含)包含在实验中。他们不是 用于任何类型的供应商特定用途,不得用于 运营部署。