url连接提供FileNotFoundException

时间:2013-07-15 14:57:00

标签: android filenotfoundexception urlconnection

我正在做一个从url读取xml并在屏幕上显示它的应用程序,但是当我想读取答案时会给我一个FileNotFoundException

这是代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView rss = (ListView) findViewById(R.id.list);
    try {

       Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("acceso!a!backend", "nu3v0!1nf0b43!2013".toCharArray());
            }
        });


        URL rssUrl = new URL("http://ec2-54-224-94-185.compute-1.amazonaws.com/adjuntos/162/rss/home_mobile.xmlx");

        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        XMLReader xmlReader = saxParser.getXMLReader();
        RSSHandler rssHandler = new RSSHandler();
        xmlReader.setContentHandler(rssHandler);

////////这里我得到了FileNotFoundException

        InputSource inputSource = new InputSource(rssUrl.openStream());
        xmlReader.parse(inputSource);

        NoticiasAdapter na = new NoticiasAdapter(this ,rssHandler.getChannel());
        rss.setAdapter(na);

    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:0)

那么URL很可能不存在。 :)

您是否尝试在浏览器中访问该网址以确认其存在?

此外,当您开始执行I / O时,URLConnection会抛出IOException,因为那时它会尝试建立物理连接。如果您希望系统提前建立连接(例如,确保URL存在),则可以使用URLConnection's connect() method使其更早连接。 (只需确保你已经完成了必要的连接配置-0setting标头等 - 事先!)等待你做I / O连接没有什么不对,所以你不需要 调用connect()以更早地建立连接,但如果您愿意,可以提前建立连接。

答案 1 :(得分:0)

我试图打开该网址,但却找不到404错误。

答案 2 :(得分:0)

网址似乎不存在。

您可以将rssUrl.openStream()修改为两行

  1. URLConnection connection = rssUrl.openConnection()
  2. InputSource inputSource = new InputSource(connection.getInputStream())
  3. 通过这种方式,您可以调试以确定您是否能够连接而不是一步完成所有操作。毕竟openStream()openConnection().getInputStream() http://docs.oracle.com/javase/7/docs/api/java/net/URL.html#openStream()

    的简写

    一旦你发现你有一个有效的URL并且能够连接,你可以根据需要改回你的实现。