HttpsURLConnection.getInputStream 在 Eclipse 中工作正常,但在导出代码并从命令行运行后,服务器返回响应代码 503

问题描述

我使用 Eclipse,偶尔会导出我的程序并从命令行运行它。除了这一件事外,功能完全相同:

HttpsURLConnection 从网站读取一些数据。当我从 Eclipse 运行代码时,这很好用。但是,在我将代码导出为 Runnable JAR 后,程序的这一部分不起作用:我得到一个

java.io.IOException: Server returned HTTP response code: 503

这是触发此错误方法

private List<Event> parse(final String url) throws IOException {
    InputStream inputStream = null;
    try {
        URL u = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection)u.openConnection();
        con.setRequestProperty("User-Agent","Mozilla/5.0 (compatible; Windows NT 6.1)");
        inputStream = con.getInputStream();
    } catch (MalformedURLException e) {
        e.printstacktrace();
    }
    final String page
        = org.apache.commons.io.IoUtils.toString(inputStream,java.nio.charset.StandardCharsets.US_ASCII);
    inputStream.close();
    ...
}

请注意,我的程序只访问本网站一次。它不会“骚扰”服务器...

解决方法

我用 java 替换了命令行中的 "C:\Program Files\Java\jdk-13.0.1\bin\java.exe",现在它可以工作了。

[通过转到项目 → 属性 → 运行/调试设置 → 编辑 → 显示命令行,我发现这就是 Eclipse 正在做的事情]。

我不确定我之前使用的普通 java 究竟指向哪里 - 在这一点上,我不打算调查。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...