从一天到下一天,我从URL对象返回一个InputStream时遇到java.io.FileNotFoundException错误。
只有我正在使用JSoup扫描的网站的某些网址才会发生这种情况。 URL地址是正确的,因为通过将地址复制到浏览器中它会返回正确的页面。
这很令人沮丧,因为我没有对代码进行任何更改。该网站是否检测到我的网页扫描并阻止了我的请求?
代码:
public Document getDocument( String source ) {
Document doc = null;
InputStream is = null;
URL newUrl = null;
try {
newUrl = new URL( source );
is = newUrl.openStream();
Connection conn = Jsoup.connect( source );
conn.timeout( 0 );
doc = Jsoup.parse( is, "CP1252", source );
}
catch ( IOException ioe ) {
ioe.printStackTrace();
}
return doc;
}
错误:
java.io.FileNotFoundException: http://www.ratebeer.com/breweries/antigua-barbuda/0/9/
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at beerparser.web.RateBeerParser.getDocument(RateBeerParser.java:389)
第389行是InputStream对象赋值。
答案 0 :(得分:0)
你可以尝试:
URLConnection connection = new URL(url).openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();
答案 1 :(得分:0)
当您收到错误响应代码时请记住,您无法使用getInputStream()
在这种情况下,您必须使用getErrorStream()