【发布时间】:2020-10-28 13:13:01
【问题描述】:
我目前正在使用 IoT 平台“Thingsboard”开展一个项目,在该平台上我创建了多个设备,并且我想从 JSON 文件向每个设备发送数据,我正在使用 Rest Api 来执行这个请求,但是我一直在苦苦挣扎如何获取我的设备的 access token 并解析它们中的每一个我的请求作为标头参数。我只是通过使用 Curl 手动完成,但我现在想自动完成。我知道 Thingsboard 有一个用 java (https://thingsboard.io/docs/reference/rest-client/) 编写的 Rest 客户端 Api,所以我尝试在我的脚本中使用它,但我没有工作。我是使用 Rest Api 的新手,所以如果有人能给我一个线索,那将非常有帮助。
这是我的请求代码的一部分:
private static String token;
public String getToken() {
return token;
}
String paramValue = "param\\with\\backslash";
String yourURLStr = "http://host.com?param=" + java.net.URLEncoder.encode(paramValue, "UTF-8");
URL url2 = new URL("https://demo.thingsboard.io/api/v1/token/telemetry?token=$JWT_TOKEN");
HttpsURLConnection conn = (HttpsURLConnection) url2.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty(JWT_TOKEN_HEADER_PARAM, "Bearer" +token);
conn.setDoOutput(true);
OutputStream outStream = conn.getOutputStream();
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
outStreamWriter.write(list.toString());
outStreamWriter.flush();
outStreamWriter.close();
outStream.close();
String response = null;
System.out.println(conn.getResponseCode());
System.out.println(conn.getResponseMessage());
DataInputStream input1 = null;
input1 = new DataInputStream (conn.getInputStream());
while (null != ((response = input1.readLine()))) {
System.out.println(response);
input1.close ();
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
【问题讨论】:
标签: java api rest jwt thingsboard