首页 > 解决方案 > Can't get input stream from URL

问题描述

I'm trying to get a BufferedImage from an URL, but it throws me an IIOException. I already checked the URL and It works fine.

Exception:

javax.imageio.IIOException: Can't get input stream from URL!
javax.imageio.ImageIO.read(ImageIO.java:1395)
de.visionvenue.statify.objects.Statistics.<init>(Statistics.java:60)
de.visionvenue.statify.commands.SetupCommand.onCommand(SetupCommand.java:67)
de.visionvenue.statify.manager.CommandManager.lambda$0(CommandManager.java:26)
java.lang.Thread.run(Thread.java:748)

Here is the code that where I try to get the BufferedImage

URL img = new URL(settings.getGuild().getIconUrl());
            
BufferedImage image = ImageIO.read(img);

The URL is

https://cdn.discordapp.com/icons/712313516542918717/8b1e61da607cdd67546ffba653a12604.png

标签: javaurlbufferedimagejavax.imageiodiscord-jda

解决方案


鉴于代码片段很少,很难看出原因,因为它适用于评论中的其他用户。


原答案:

您想改用URLConnection 类

然后您可以调用.connect().getInputStream()


如果您需要更复杂的逻辑和更好的 API,我建议使用Apache HTTPClient(用于任何 HTTP 调用)或最适合基于 REST 的连接的JAX-RS 客户端,但也可用于任何其他 url 连接. 后者的优点是存在多种实现(resteasy、jersey、CXF,仅举几例)。


推荐阅读