【问题标题】:jsoup statusCode won't print 404 errorjsoup statusCode 不会打印 404 错误
【发布时间】:2016-09-19 22:19:44
【问题描述】:

在我的 Java servlet 中,我想根据从请求返回到 url 的状态代码执行一些操作。

我的代码如下所示:

String source = "http://urltoparse.org/name/date";
boolean validQuery = jsoupHandler.sourceExists(source);

int statusCode = jsoupHandler.srcExists(source);
response.getWriter().println("stat: " + statusCode);

jsoupHandler:

public class JSoupHandler {
    public int srcExists(String source) throws IOException {
        Connection.Response resp = Jsoup.connect(source).execute();
        System.out.println("status" + resp.statusCode());
        return resp.statusCode();
    }
}

statusCode == 200 时,它会打印

stat: 200 在浏览器中,status200 在我的 jsouphandler 控制台中。

但是,当我输入应该返回 404 的源时,如下所示:

String source = "http://urltoparse.org/name/date2";

浏览器不打印任何内容,我的控制台打印如下错误:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=404, URL=http://urltoparse.org/name/date2

为什么浏览器和控制台的打印语句都不打印状态码?我想做类似的事情

if (statusCode != 200) {
//do something
}

但我无法进入这个条件语句。

我看过这个链接:Jsoup error handling when couldn't connect to website

但无法让它为我工作。

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    添加

    .ignoreHttpErrors(true)
    

    根据您的要求。

    参见 API:https://jsoup.org/apidocs/org/jsoup/Connection.html#ignoreHttpErrors-boolean-

    【讨论】:

    • 我使用的是 Connection.Response,而不是 Connection.Request,根据这个:'jsoup.org/apidocs/org/jsoup/…' .statusCode() 应该返回任何状态码,我不确定我会如何如果我使用 Connection.Request
    • Jsoup.connect(source).execute(); 是一个请求,您正在存储响应。该请求导致http错误,通过设置Jsoup.connect(source).ignoreHttpErrors(true).execute();,您告诉Jsoup在连接时忽略http错误,否则Jsoup会在http错误时抛出异常。
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 2015-02-14
    • 2016-06-12
    • 2018-01-08
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多