2016-08-17 88 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之間的選項編號保留用於實驗。它們不是 ,意味着供應商特定的任何類型的使用,並且不得在 運營部署中使用。