27. 钛极OS之COAP

钛极OS之COAP

 

  域名解析系统协议客户端(Constrained Application Protocol)是专用于低资源硬件的物联网协议, 它是一种基于UDP的应用层协议, 支持URL方式访问,就像HTTP请求一样,支持GET,POST,PUT,DELETE等操作。

 

  Java包

  tijos.framework.networkcenter.coap

 

  CoAP客户端 - CoAPClient类

  CoAPClient 类中包含了所有CoAP客户端相关的操作, CoAP协议一般包含4种请求, 包括POST,GET,PUT,DELETE 通过向指定URI来发送相关请求与服务器端进行交互

 

  消息类型

  CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。在实际使用中CON最为常用。

  CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。

  NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。

  ACK——应答消息,接受到CON消息的响应。

   RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。


  URI 资源

  一个CoAP资源可以被一个URI所描述, URI中不包含服务器及端口, 例如 /sensors/temperature

 

  ContentType 内容类型

  用于标识CoAP请求的内容类型, 包括 APPLICATION_TEXT_PLAIN/APPLICATION_XML/APPLICATION_JSON等等, 与CoAP服务器提供的数据格式有关。

  主要方法如下:

 

 
方法 说明
CoAPClient getInstance( ) 获得CoAPClient实例
void connect(String serverUrl) 连接到CoAP服务器 serverUrl 格式为coap://192.168.0.10:5683 或 coaps://192.168.0.10:5684
void disconnect( ) 断开连接
void setMessageType(int messageType) 设置消息请示类型, 包括 0-CON, 1-NON, 2-ACK, 3-RST
int post(String uri, int contentType, byte[] content) 通过CoAP POST请求将数据发向指定uri, contentType 内容类型, 如APPLICATION_TEXT_PLAIN, APPLICATION_JSON 等等, 返回消息ID
int get(String uri, int contentType) 向指定URI发送GET请求,返回消息ID
int put(String uri, int contentType, byte[] content) 通过CoAP PUT请求将数据发向指定uri,返回消息ID
int delete(String uri) 向指定URI发送DELETE请求,返回消息ID
boolean isBusy( ) CoAP 是否仍有请求未完成, 用于在退出应用或进入待机状态时确保CoAP请求已完成
  ICoAPMessageListener CoAP 事件监听

  ICoAPMessageListener 提供了CoAP相关事件处理接口 :

 

 
方法 说明
void getResponseArrived(String uri, int msgid, boolean result, int msgCode, byte[] payload) GET消息返回事件
void postResponseArrived(String uri, int msgid, boolean result, int msgCode) POST消息返回事件
void putResponseArrived(String uri, int msgid, boolean result, int msgCode) PUT消息返回事件
void deleteResponseArrived(String uri, int msgid, boolean result, int msgCode) DELETE消息返回事件

 

  事件中的参数含义如下

  uri - 事件有关的URI

  msgid - 对应的请求消息ID

  result - true:请求成功 false: 请求失败

  msgCode - CoAP返回代码

  使用说明

  在实际使用中一般使用POST请求将数据发送到指定URI, 并通过GET请求获取指定URI的数据

  调用流程如下:
  1. ...
  2.  
  3. //CoAP 服务器url
  4. String url = "coap://coap.tijcloud.com:5683";
  5. String test_uri = "/test";
  6.  
  7. //获取CoAP客户端实例
  8. CoAPClient coapClient = CoAPClient.getInstance();
  9.  
  10. //连接到服务器
  11. coapClient.connect(url);
  12.  
  13. //设置事件监听
  14. coapClient.setMessageListener(new CoAPMessageListener());
  15.  
  16. //发送POST请求到URI
  17. String content = "test";
  18. coapClient.post(temperature_uri, CoAPClient.APPLICATION_TEXT_PLAIN, content.getBytes());
  19.  
  20. //GET请求获取指定URI值, 结果通过getResponseArrived事件返回
  21. coapClient.get(temperature_uri, CoAPClient.APPLICATION_TEXT_PLAIN);
  22.  
  23. //等待所有处理完成
  24. while(coapClient.isBusy()) {
  25. Delay.msDelay(1000);
  26. System.out.println("Busy ..");
  27. }
  28.  
  29. //断开连接
  30. coapClient.disconnect();
复制代码
  更多详细介绍请见钛云物联官网:www.tijos.net

你可能感兴趣的:([钛极OS专栏])