无法从 URL 获取输入流
Can't get input stream from URL
我正在尝试从 URL 获取 BufferedImage,但它向我抛出一个 IIOException。我已经检查了 URL,它工作正常。
异常:
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[=11=](CommandManager.java:26)
java.lang.Thread.run(Thread.java:748)
这是我尝试获取 BufferedImage 的代码
URL img = new URL(settings.getGuild().getIconUrl());
BufferedImage image = ImageIO.read(img);
URL是
https://cdn.discordapp.com/icons/712313516542918717/8b1e61da607cdd67546ffba653a12604.png
鉴于代码片段很少,很难找出原因,因为它对评论中的其他用户有效。
原回答:
您想改用 URLConnection class。
然后您可以调用 .connect()
和 .getInputStream()
。
如果您需要更复杂的逻辑和更好的 API,我建议您使用最适合基于 REST 的连接的 Apache HTTPClient (for any HTTP calls) or the JAX-RS client,但也可用于任何其他 url 连接.后者的优点是存在多种实现(resteasy、jersey、CXF,仅举几例)。
您可以在URL
中使用openStream()
方法,如下:
String url = settings.getGuild().getIconUrl();
URL img = new URL(url);
BufferedImage image = ImageIO.read(img.openStream());
我正在尝试从 URL 获取 BufferedImage,但它向我抛出一个 IIOException。我已经检查了 URL,它工作正常。
异常:
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[=11=](CommandManager.java:26)
java.lang.Thread.run(Thread.java:748)
这是我尝试获取 BufferedImage 的代码
URL img = new URL(settings.getGuild().getIconUrl());
BufferedImage image = ImageIO.read(img);
URL是
https://cdn.discordapp.com/icons/712313516542918717/8b1e61da607cdd67546ffba653a12604.png
鉴于代码片段很少,很难找出原因,因为它对评论中的其他用户有效。
原回答:
您想改用 URLConnection class。
然后您可以调用 .connect()
和 .getInputStream()
。
如果您需要更复杂的逻辑和更好的 API,我建议您使用最适合基于 REST 的连接的 Apache HTTPClient (for any HTTP calls) or the JAX-RS client,但也可用于任何其他 url 连接.后者的优点是存在多种实现(resteasy、jersey、CXF,仅举几例)。
您可以在URL
中使用openStream()
方法,如下:
String url = settings.getGuild().getIconUrl();
URL img = new URL(url);
BufferedImage image = ImageIO.read(img.openStream());