【问题标题】:Can't get input stream from URL! Java无法从 URL 获取输入流!爪哇
【发布时间】:2016-02-16 10:37:34
【问题描述】:

我有以下从 url 读取图像的简单程序。

public class TestWebScrapper {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        URL imageUrl;
        try {
            imageUrl = new URL("https://assets.boxdice.com.au/bj_corporate/listings/1751/4618116b.jpg");
            HttpURLConnection connection = (HttpURLConnection) imageUrl.openConnection();
                    connection.setRequestProperty(
                            "User-Agent",
                            "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0");
            BufferedImage propertImage = ImageIO.read(imageUrl);
        } catch (Exception ex) {
            Logger.getLogger(TestWebScrapper.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

我遇到的问题是这给出了一个例外

无法从 URL 获取输入流!

带有消息:

收到致命警报:internal_error

我尝试添加用户代理,但问题仍然存在。该链接在浏览器上运行良好。 此错误仅针对来自此 url 的图像,但有人知道如何解决此问题吗?

【问题讨论】:

  • 您是否打算将 connection 传递给 ImageIO.read,因为该对象具有已编辑的 uer 代理?
  • http vs https 或 HttpUrlConnection vs HttsUrlConnection
  • @simar 我必须使用 HttpsUrlConnection 从 https 网络服务器获取图像吗?如果是这样,我需要检查网址是否为 https 或 http?还是得到处理?
  • 不需要,取决于网络服务器的配置方式。但如果访问 https 则使用 HttpsUrlConnection。
  • 图片您正在尝试从 assets.boxdice.com.au 下载,可通过 http 和 https 获得。但是,如果网站配置为仅使用 https,您可能会遇到错误。

标签: java netbeans user-agent


【解决方案1】:

您在连接上设置了User-Agent,然后使用imageUrl 加载图像,所以这没有效果。

使用

BufferedImage propertImage = ImageIO.read(connection.getInputStream());

改为(完成后关闭输入流)。

【讨论】:

    猜你喜欢
    • 2017-08-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2017-09-11
    相关资源
    最近更新 更多