-1
在我的Java servlet中,我想执行一些操作,具体取决于从请求返回到url的状态代码。jsoup statusCode将不会打印404错误
我的代码如下所示:
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
,但不能让它为我工作。
我使用Connection.Response,不Connection.Request,根据本: “https://jsoup.org/apidocs/org/jsoup/Connection.Response.html #statusCode--'.statusCode()应该返回任何状态码,我不知道如果我使用Connection.Request – matcha
'Jsoup.connect(source).execute();'是一个请求并且您正在存储响应。该请求导致http错误,并通过设置'Jsoup.connect(source).ignoreHttpErrors(true).execute();'你告诉Jsoup在连接时忽略http错误,否则Jsoup会在http错误上抛出异常。 –