java - 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
解决方案
鉴于代码片段很少,很难看出原因,因为它适用于评论中的其他用户。
原答案:
您想改用URLConnection 类。
然后您可以调用.connect()
和.getInputStream()
。
如果您需要更复杂的逻辑和更好的 API,我建议使用Apache HTTPClient(用于任何 HTTP 调用)或最适合基于 REST 的连接的JAX-RS 客户端,但也可用于任何其他 url 连接. 后者的优点是存在多种实现(resteasy、jersey、CXF,仅举几例)。
推荐阅读
- gmail - 如何从 Gmail API 中的子标签获取电子邮件?
- javascript - 如何在php中重定向url显示模式?
- swift - 如何从 String Swift 中选择第一个和最后一个数字
- webrtc - 用peer做中继是否积极(转)
- php - PHPUnit ArgumentCountError
- hybris - 验证拦截器在多线程 Impex 中不起作用
- maxima - 在没有堆问题的情况下解决极大问题
- android - 如何在android中使用flutter以编程方式管理手势导航?
- html - 如何让 2 列网格在 html 中工作?
- nlp - 文档的顺序是否会影响 Gensim 的短语模型的结果?