当前,我正在一个项目上,在这里我不会从物联网中获取一些JSON数据。他们有一个称为“数据存储”的集成,它将我们发送到另一个包含一些其他api链接的域。他们看起来像这样:
https://---.---.thethingsnetwork.org/api/v2/devices
他们需要授权才能访问它们。然后,我的问题是,我如何才能授权网站并获取JSON数据。我可以从不安全的api获取数据。
这是我用于从不安全的api提取数据的代码,但是我无法使用此程序访问我的安全api。该程序说“构建成功”,但不打印任何内容。
public static void main(String[] args) {
String jsonText = "";
try {
String token = "---";
String encoded = Base64.getEncoder().encodeToString((token).getBytes(StandardCharsets.UTF_8));
URL url = new URL("https://---.thethingsnetwork.org/api/v2/devices");
HttpsURLConnection http = (HttpsURLConnection) url.openConnection();
http.setRequestMethod("GET");
http.setRequestProperty("Content-length", "0");
http.setUseCaches(false);
http.setAllowUserInteraction(false);
http.connect();
InputStream im = hr.getInputStream();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(im));
//Object obj = new JSONParser().parse(im);
String line = br.readLine();
while (line != null) {
sb.append(line + "\n");
System.out.println("line: " + line);
jsonText = sb.toString();
bw.write(line);
bw.newLine();
line = br.readLine();
}
} catch (Exception e) {
System.out.println("Something went wrong");
}
}
我希望程序应至少打印所有JSON数据。可以通过我拥有的令牌来访问API。
答案 0 :(得分:0)
似乎,您正在访问的Https URL没有ssl证书。因此,安装它,您将可以访问它的内容。
注意:您使用的HTTPS URL必须具有ssl证书。 如果您访问的url没有证书,则首先必须下载证书。您可以使用命令
使用密钥库java-home/bin/keytool -genkey -alias server-alias -keyalg RSA -keypass changeit
-storepass changeit -keystore keystore.jks
您的代码中的所有内容对我来说都是正确的。