2016-08-17 89 views
0

我知道CoAP定义了一些可以包含在发送请求中的选项,每个选项都有自己的编号。 CoAP URI请求的结构如下所示:如何向CoAP请求添加额外选项?

coap-URI =“coap:”“//”host [“:”port] path-abempty [“?”查询]

其中包含一些选项,如:Uri-Host,Uri-Port,Uri-Path和Uri-Query,每个都有自己的编号,例如:Uri-Host 11为Uri Path ....。我想为这个CoAP请求增加一些额外的选项,例如256,257的一些选项......我该怎么做?

谢谢你在先进

儿子

+0

你找出上述问题的答案吗?如果是,请分享回答 – Ashok

+0

尝试过这个request.getOptions()。addOption(new Option(256,“admin:admin”));但接收器无法看到这一点 – Ashok

回答

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批准)定义的 选项。 012..范围256..2047被保留用于公共 规范(规范要求)的常用选项。 2048..64999的范围为 ,其他选项包括私有或特定于供应商的选项, 经过指定专家审核以帮助确保正确定义选项语义 。 65000和65535之间的选项编号保留用于实验。它们不是 ,意味着供应商特定的任何类型的使用,并且不得在 运营部署中使用。