【Java】一文秒懂http请求获取FlexManager平台FBox盒子信息

时间:2022-10-09 20:54:57

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调试

【Java】一文秒懂http请求获取FlexManager平台FBox盒子信息

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所在的用户名称
email 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提供了大量能使我们自己快速全面使用云数据创建客户端应用的方式方法,同学们可以多深入了解一下。