InputStream打开问题:java.io.FileNotFoundException

时间:2014-05-19 15:17:53

标签: java url inputstream filenotfoundexception

从一天到下一天,我从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对象赋值。

2 个答案:

答案 0 :(得分:0)

你可以尝试:

URLConnection connection = new URL(url).openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();

答案 1 :(得分:0)

当您收到错误响应代码时请记住,您无法使用getInputStream()

读取返回的正文内容

在这种情况下,您必须使用getErrorStream()

阅读返回的正文