如何使用InspiroBot.meapi?

How to use InspiroBot.me api?

我正在尝试在我的机器人中执行命令,它应该让 InspiroBot(来自 inspirobot.me)生成励志名言(如 图像,而不是字符串)并在文本通道中发送该图像。这个 url 是 http://inspirobot.me/api?generate=true ,其中生成另一个 url ,显示生成的图像。

我是 api 的新手,所以按照关于该主题的随机教程,我尝试了以下代码:

try {
    URLConnection connection = new URL("http://inspirobot.me/api?generate=true").openConnection();
    InputStream input = connection.getInputStream();
    System.out.println(connection.getContentType());
} catch (IOException e) {
    e.printStackTrace();
}

但是,返回的内容类型为空,尝试使用 getContent() 会导致错误,因为显然没有内容。 :/

您正在尝试访问 http://inspirobot.me/api?generate=true,这只会将您重定向到页面的 HTTPS 版本 - https://inspirobot.me/api?generate=true。它没有 return 其他任何东西。重定向响应没有正文,这就是内容类型 returned 为 null 并且您无法从 InputStream 中获得任何有用信息的原因。

但是,如果您首先访问 HTTPS,您会得到预期的结果:

try {
    URLConnection connection = new URL("https://inspirobot.me/api?generate=true").openConnection();
    InputStream input = connection.getInputStream();
    System.out.println(connection.getContentType());

    String pictureUrl = new BufferedReader(new InputStreamReader(input)).readLine();
    System.out.println(pictureUrl);
} catch (IOException e) {
    e.printStackTrace();
}

会给你:

text/html; charset=utf-8
https://generated.inspirobot.me/a/qlPBbxz1P5.jpg

应执行第二个请求以获取图片本身。

P.S。您尝试使用的 URLConnection class 非常旧,级别低,甚至不特定于 HTTP,我建议使用一些 http 客户端库,例如 Java 11.[=15 中引入的 apache http client or HttpClient class =]