JSON授权

时间:2019-04-08 08:20:37

标签: java json rest

当前,我正在一个项目上,在这里我不会从物联网中获取一些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。

1 个答案:

答案 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

您的代码中的所有内容对我来说都是正确的。