CSDN话题挑战赛第2期
参赛话题:学习笔记

文章目录

  • 前言
  • 一、获取单个盒子
    • 1、接口功能
    • 2、请求地址:
    • 3、地址参数说明
    • 4、请求格式说明
    • 5、请求方式
  • 二、通讯测试
    • 1、ApiPost7调试
    • 2、响应成功讲解
  • 三、通讯代码编写
    • 1、HTTP/1.1请求
    • 2、AsyncHttp请求
    • 3、nethttp请求
    • 4、OkHttp请求
    • 5、Unirest请求
  • 总结

前言

上个专栏介绍了很多关于FlexManager设备云端数据的各种操作,相信大家都有看了。本专栏将就怎么使用设备云数据库的数据进行自主客户端APP开发的一些知识点做一下细致讲解。当然,自始至终,我只讲自己擅长的领域,只分享某一块自己真实应用的体验和经验。本篇讲解使用http请求获取FlexManager平台某个FBox盒子的相关信息。


提示:以下是本篇文章正文内容,下面案例可供参考

一、获取单个盒子

1、接口功能

获取当前用户名下的所有FBox分组,以及分组下的FBox的相关参数

2、请求地址:

(二选一)
旧版:

URL:[App Server]/api/client/box/reg/boxno/{boxNo}

新版:

URL:[Host Server]/api/client/box/reg/boxno/{boxNo}

3、地址参数说明

参数名数据类型参数详情
App Serverstring主应用服务器,公有云地址为:http://fbox360.com
Host Serverstring公有云地址为:https://fbox360.com
boxNostringFBOX盒子或FLINK系列模块编码

4、请求格式说明

接口请求body部分若无特殊说明,请求格式为application/json格式,所有接口均不支持跨域请求 。

5、请求方式

请求方式为GET。

请求Headers如下所示:

参数名数据类型参数详情
AuthorizationstringBearer+ 空格+登录接口中获得的access_token

请求的Body为NULL。

二、通讯测试

1、ApiPost7调试

2、响应成功讲解

响应成功后接口返回的参数如下所示:

{"id": "-877430285995765856","alias": "浙江省XXX1T纯水新","boxUid": "49692551089636593XX","ownerUserName": "XXXXcheng","owned": true,"user_Id": "9806","regData": "2022-08-06T07:36:37.943858","given": false,"shared": false,"favorite": false,"group": {"id": "657376853828313XXX","name": "XX纯水系统","boxRegs": []},"groupId": "657376853828313424","box": {"id": "4969255108963659325","boxType": 0,"boxNo": "300222032522","connectionState": 1,"cs": {"signalrUrl": "http://fbcs101.fbox360.com/push","apiBaseUrl": "http://fbcs101.fbox360.com/api/"},"userPassword": "90XXX","currentSessionId": 0}}

接口返回的参数很多,列出来的参数是基本有需要用到的参数,其他的参数没有写在文档中的是用不到的参数,请大家忽略就好。
返回字段:

参数名数据类型参数描述
idstring用户添加(分享)盒子时系统分配的和本人账号关联的注册ID
boxUidstringFBox的id
aliasstringFBox别名
regDatastringFBox注册时间
ownedboolean是否为拥有者
sharedboolean是否被分享
boxjson对象参考下表
groupjson对象FBox所属分组
group_IdstringFBox所属分组id
userjson对象FBox所属的用户信息
user_IdstringFBox所属用户名id

box 对象属性:

参数名数据类型参数描述
idstringFBox的uid
boxNostringFBox序列号
boxTypestring0:标准盒子,1:mini盒子,2,4,7是lite盒子,5是link盒子
connectionStateint
csjson对象apiBaseUrl:盒子连接的服务器地址。signalrUrl:盒子数据推送的SignalR地址
devicePrimarySourceintFBox驱动数据源,0:FBox,1:服务器
memostring备注信息
netint0:未知 1:以太网2:GPRS 4:WIFI(不支持) 5:4G
modeint1:透传中,0:正常
useLongitudedouble手动定位的经度
useLatitudedouble手动定位的纬度
longitudedouble自动定位的经度
latitudedouble自动定位的纬度
useAddressstring手动定位地址
addressstring自动定位详细地址
radiusint经度半径

group属性对象:

参数名数据类型参数描述
idstringFBox所属分组id
namestringFBox所在的分组名称

user属性对象:

参数名数据类型参数描述
userNamestringFBox所在的用户名称
emailstringFBox所在用户的邮箱
phoneNumberstringFBox所在用户的手机号码

返回码:

参数名参数描述
401accessToken过期
404盒子不存在

三、通讯代码编写

1、HTTP/1.1请求

GET /api/client/box/reg/boxno/FBox系列号) HTTP/1.1Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiNDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jb20vY29yZSIsImF1ZCI6Imlkc3ZyMyIsImNsaWVudF9pZCI6IjYxZGM5MzgyYTNlMTQ2ZjY4ZmNlODU3MGNhNjhmYmRhIiwic3ViIjoiMWE3ZTI2ZmQtNzE0Zi00YjM3LWExODMtZmI5NmVhMGQyODBmIiwic2NvcGUiOlsiZmJveCJdfQ.QhfJbReZYc9joY19W7Un_DQrKMicGldScEKZA_tQX_Yj1UaC3RLq_Wo_T8cOHiGPzs05FSET055q-I3HP-xTnr0xLx-aW6k5Ad9vSQwEvRrn3F2uUmE9SxDm1M8kRppqI-1VHmPuDzusYPfvAdmCjXaacUY736nKJoiMVY8qbMahK3zcDjtYc7ks1XMgJYG1UHnOTBz-cpRuL424E4nsIbRGMkgYJ08V2Ex7Ew9cmF2NAW3mBfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-AHost: fbcs101.fbox360.com

2、AsyncHttp请求

AsyncHttpClient client = new DefaultAsyncHttpClient();client.prepare("GET", "http://fbcs101.fbox360.com/api/client/box/reg/boxno/(FBox系列号)")  .setHeader("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiOjE2NjQ5NzM3MTAsImV4cCI6MTY2NDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jb201VHmPuDzusYPfvAdmCjXaacUY736nKJoiMVY8qbMahK3zcDjtYc7ks1XMgJYG1UHnOTBz-cpRuL424E4nsIbRGMkgYJ08V2ExmF2NAW3mBKGNoAZqOPfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-A")  .execute()  .toCompletableFuture()  .thenAccept(System.out::println)  .join();client.close();

3、nethttp请求

HttpRequest request = HttpRequest.newBuilder()    .uri(URI.create("http://fbcs101.fbox360.com/api/client/box/reg/boxno/(FBox系列号)"))    .header("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiOjE2NjQ5NzM3MTAsImV4cCI6MTY2NDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jbcGUiOlsiZmJveCJdfQ.QhfJbReZYc9joY19W7Un_DQrKMicGldScEKZA_tQX_Yj1UaC3RLq_Wo_T8cOHiGPs05FSET055q-I3HP-xTnr0xLx-aW6k5Ad9vSQwEvRrn3F2uUmE9SxDm1M8kRppqI-1VHmPuDzusYPfvAdmCjXaacUY736nKJoiMVY8qbMahK3zcDjtYc7ks1XMgJYG1UHnOTBz-cpRuL424E4nsIbRGMkgYJ08V2Ex7EyjuWt0Ib43mw9cmF2NAW3mBKGNoAZqOPfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-A")    .method("GET", HttpRequest.BodyPublishers.noBody())    .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());

4、OkHttp请求

OkHttpClient client = new OkHttpClient();Request request = new Request.Builder()  .url("http://fbcs101.fbox360.com/api/client/box/reg/boxno/(FBox系列号)")  .get()  .addHeader("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiOjE2NjQ5NzM3MTAsImV4cCI6MTY2NDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jb20vY29yZSIsImF1ZCI6Imlkc3ZyMyIsImNsaWVudF9pZCI6IjYxZGM5MzgyYTNlMTQ2ZjY4ZmNlODU3MGNhNjhmYmRhIiwic3ViIjoiMWE3ZTI2ZmQtNzE0Zi00YjM3LWExODMtZmI5NmVhMGQyODBm9SxDm1M8kRppqI-1VHmPuDzusYPfvAdmCjXaac43mw9cmF2NAW3mBKGNoAZqOPfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-A")  .build();Response response = client.newCall(request).execute();

5、Unirest请求

HttpResponse<String> response = Unirest.get("http://fbcs101.fbox360.com/api/client/box/reg/boxno/(FBox系列号)")  .header("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiOjE2NjQ5NzM3MTAsImV4cCI6MTY2NDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jb20vY29yZSIsImF1ZCI6Imlkc3ZyMyIsImNsaWVudF9pZCI6IjYxZGM5MzgyYTNlMTMVY8qbMahK3zcDjtYc7ks1XMgJYG1UHnOTBz-cpRuL424E4nsIbRGMkgYJ08V2Ex7EyjuWt0Ib43mw9cmF2NAW3mBKGNoAZqOPfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-A")  .asString();

总结

以上就是今天要讲的内容,本文仅仅简单介绍了使用http请求获取FlexManager平台FBox盒子信息,而FlexManager提供了大量能使我们自己快速全面使用云数据创建客户端应用的方式方法,同学们可以多深入了解一下。