如何使用 InspiroBot.me api?

Posted

技术标签:

【中文标题】如何使用 InspiroBot.me api?【英文标题】:How to use InspiroBot.me api? 【发布时间】:2021-10-13 07:35:30 【问题描述】:

我正在尝试在我的机器人中实现一个命令,它应该让 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();

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

【问题讨论】:

【参考方案1】:

您正在尝试访问 http://inspirobot.me/api?generate=true,它只会将您重定向到页面的 HTTPS 版本 - https://inspirobot.me/api?generate=true。它不返回任何其他内容。重定向响应没有正文,这就是返回的 Content Type 为 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

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

附:您尝试使用的 URLConnection 类非常陈旧、低级,甚至不是特定于 HTTP,我建议使用一些 http 客户端库,如 Java 11 中引入的 apache http client 或 HttpClient class。

【讨论】:

以上是关于如何使用 InspiroBot.me api?的主要内容,如果未能解决你的问题,请参考以下文章

如何调用百度地图API

如何使用 api-platform 构建 GraphQL API?

如何记录API

如何在网页中调用百度地图api

如何使用服务使用启用 Bigquery API?

如何使用 SwiftyJSON 显示 API 图像