如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章