概述
使用Java获取OneNet平台数据----笔记2
OneNet平台提供了API使用方法,但是部分小白可能看不懂具体怎么使用
doGet(“http://api.heclouds.com/devices/{devices_id}/datapoints?datastream_id={humidity}&start=2017-01-01T00:00:00&limit=100”);
这里是获取设备历史数据的例子,只需将URL中的devices_id和datastream_id和代码中token改为自己的就行。
注意:官方网址最后的HTTP/1.1不加
token算法
token计算工具下载及使用方法
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
/*import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;*/
public class getclass {
public static void main(String[] args) {
//调用方法
doGet("http://api.heclouds.com/devices/{devices_id}/datapoints?datastream_id={humidity}&start=2017-01-01T00:00:00&limit=100");
}
public static String doGet(String url) {
HttpURLConnection httpURLConnection = null;
InputStream in = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try {
// 创建远程url连接对象
URL url1 = new URL(url);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
httpURLConnection = (HttpURLConnection) url1.openConnection();
// 设置连接方式:get
httpURLConnection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间:15000毫秒
httpURLConnection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
httpURLConnection.setReadTimeout(60000);
//设置格式
httpURLConnection.setRequestProperty("Content-type", "application/json");
// 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0 OneNet平台使用的是Authorization+token
httpURLConnection.setRequestProperty("authorization","你的token");
// 发送请求
httpURLConnection.connect();
// 通过connection连接,获取输入流
if (httpURLConnection.getResponseCode() == 200) {
in = httpURLConnection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("rn");
}
result = sbf.toString();
System.out.println("response="+result);
//处理返回的数据
/*JSONObject jsonObject = JSON.parseObject(result);
System.out.println("jsonobj="+jsonObject);
JSONObject jsonObject1=jsonObject.getJSONObject("data");
// String datastreams = jsonObject1.getString("datastreams");
// System.out.println("datastreams中的"+datastreams);
JSONArray array=jsonObject1.getJSONArray("datastreams");
JSONObject jsonObject2=array.getJSONObject(0);
System.out.println("datastreams内的="+jsonObject2);
JSONArray array1=jsonObject2.getJSONArray("datapoints");
for(int i=0;i<array1.size();i++){
JSONObject jsonObject4=array1.getJSONObject(i);
String time=jsonObject4.get("at").toString();
String values=jsonObject4.get("value").toString();
System.out.println("时间为 "+time.toString()+" and "+" 湿度为 "+values.toString());
}*/
}
} catch (UnsupportedEncodingException unsupportedEncodingException) {
unsupportedEncodingException.printStackTrace();
} catch (ProtocolException protocolException) {
protocolException.printStackTrace();
} catch (MalformedURLException malformedURLException) {
malformedURLException.printStackTrace();
} catch (IOException ioException) {
ioException.printStackTrace();
}finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
httpURLConnection.disconnect();// 关闭远程连接
}
return result;
}
请求成功后会返回一个json格式的字符串,例:
response={“errno”:0,“data”:{“count”:21,“datastreams”:[{“datapoints”:[{“at”:“2021-05-21 13:04:56.257”,“value”:“85”},{“at”:“2021-05-21 13:05:35.199”,“value”:“85L”}]},“error”:“succ”}
如果要获取其中的数据需要现将其转化为json对象,代码中有操作方法这里就不多赘述,需注意的是如果要使用代码中操作json的方法需导入处理fastjson-1.2.76.jar包下载地址
public class test {
public static void main(String[] args) {
Gettest("http://api.heclouds.com/devices/722413660/datastreams/level");
}
public static String Gettest(String url) {
HttpURLConnection connection = null;
InputStream in = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try {
URL url1=new URL(url);
connection = (HttpURLConnection) url1.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
//设置格式
connection.setRequestProperty("Content-type", "application/json");
//设置验证方式
connection.setRequestProperty("authorization", "version=2018-10-31&res=products%2F430138&et=1672735919&method=md5&sign=RTtOqY83oqgwlSYU5DPiQA%3D%3D");
//也可以
// connection.setRequestProperty("api-key","你的Master-APIkey");
in = connection.getInputStream();
br = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
result=response.toString();
System.out.println(response);
} catch (MalformedURLException | ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (connection != null) {
connection.disconnect();
}
}
return result;
}
}
后续可以看看我的另一篇文章,使用HttpClient发送请求,更加的简洁方便HttpClient的基本使用
https://www.cnblogs.com/hhhshct/p/8523697.html java实现HTTP请求的三种方式
最后
以上就是安静发卡为你收集整理的使用Java获取OneNet平台数据的全部内容,希望文章能够帮你解决使用Java获取OneNet平台数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复