CSDN话题挑战赛第2期
参赛话题:学习笔记
文章目录
前言
上个专栏介绍了很多关于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 Server | string | 主应用服务器,公有云地址为:http://fbox360.com |
Host Server | string | 公有云地址为:https://fbox360.com |
boxNo | string | FBOX盒子或FLINK系列模块编码 |
4、请求格式说明
接口请求body部分若无特殊说明,请求格式为application/json格式,所有接口均不支持跨域请求 。
5、请求方式
请求方式为GET。
请求Headers如下所示:
参数名 | 数据类型 | 参数详情 |
---|---|---|
Authorization | string | Bearer+ 空格+登录接口中获得的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
}
}
接口返回的参数很多,列出来的参数是基本有需要用到的参数,其他的参数没有写在文档中的是用不到的参数,请大家忽略就好。
返回字段:
参数名 | 数据类型 | 参数描述 |
---|---|---|
id | string | 用户添加(分享)盒子时系统分配的和本人账号关联的注册ID |
boxUid | string | FBox的id |
alias | string | FBox别名 |
regData | string | FBox注册时间 |
owned | boolean | 是否为拥有者 |
shared | boolean | 是否被分享 |
box | json对象 | 参考下表 |
group | json对象 | FBox所属分组 |
group_Id | string | FBox所属分组id |
user | json对象 | FBox所属的用户信息 |
user_Id | string | FBox所属用户名id |
box 对象属性:
参数名 | 数据类型 | 参数描述 |
---|---|---|
id | string | FBox的uid |
boxNo | string | FBox序列号 |
boxType | string | 0:标准盒子,1:mini盒子,2,4,7是lite盒子,5是link盒子 |
connectionState | int | |
cs | json对象 | apiBaseUrl:盒子连接的服务器地址。signalrUrl:盒子数据推送的SignalR地址 |
devicePrimarySource | int | FBox驱动数据源,0:FBox,1:服务器 |
memo | string | 备注信息 |
net | int | 0:未知 1:以太网2:GPRS 4:WIFI(不支持) 5:4G |
mode | int | 1:透传中,0:正常 |
useLongitude | double | 手动定位的经度 |
useLatitude | double | 手动定位的纬度 |
longitude | double | 自动定位的经度 |
latitude | double | 自动定位的纬度 |
useAddress | string | 手动定位地址 |
address | string | 自动定位详细地址 |
radius | int | 经度半径 |
group属性对象:
参数名 | 数据类型 | 参数描述 |
---|---|---|
id | string | FBox所属分组id |
name | string | FBox所在的分组名称 |
user属性对象:
参数名 | 数据类型 | 参数描述 |
---|---|---|
userName | string | FBox所在的用户名称 |
string | FBox所在用户的邮箱 | |
phoneNumber | string | FBox所在用户的手机号码 |
返回码:
参数名 | 参数描述 |
---|---|
401 | accessToken过期 |
404 | 盒子不存在 |
三、通讯代码编写
1、HTTP/1.1请求
GET /api/client/box/reg/boxno/(FBox系列号) HTTP/1.1
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg2QzQ2RTIxQTc0MTUxNTFCOTQ0MTY4MzhEMERGODU1OTZENkM2RTgiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJoc1J1SWFkQlVWRzVSQmFEalEzNFZaYld4dWcifQ.eyJuYmYiNDk4MDkxMCwiaXNzIjoiaHR0cHM6Ly9hY2NvdW50LmZsZXhlbS5jb20vY29yZSIsImF1ZCI6Imlkc3ZyMyIsImNsaWVudF9pZCI6IjYxZGM5MzgyYTNlMTQ2ZjY4ZmNlODU3MGNhNjhmYmRhIiwic3ViIjoiMWE3ZTI2ZmQtNzE0Zi00YjM3LWExODMtZmI5NmVhMGQyODBmIiwic2NvcGUiOlsiZmJveCJdfQ.QhfJbReZYc9joY19W7Un_DQrKMicGldScEKZA_tQX_Yj1UaC3RLq_Wo_T8cOHiGPzs05FSET055q-I3HP-xTnr0xLx-aW6k5Ad9vSQwEvRrn3F2uUmE9SxDm1M8kRppqI-1VHmPuDzusYPfvAdmCjXaacUY736nKJoiMVY8qbMahK3zcDjtYc7ks1XMgJYG1UHnOTBz-cpRuL424E4nsIbRGMkgYJ08V2Ex7Ew9cmF2NAW3mBfMyQfRncUtco4e5TOH7_RQwu4XkF8SQ1GgSAXPHJDNy4Ok4xXDqjrvw5C9Kxe_eaXmi8T7l6PvjOPjm-A
Host: 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提供了大量能使我们自己快速全面使用云数据创建客户端应用的方式方法,同学们可以多深入了解一下。