InputStream无法打开指定URL的流

3

我只是想将一个URL加载到InputStream中,但似乎从未成功过。

private void getWebpage(String url)
{
    URL myFileUrl = null;  

    try
    {
         myFileUrl= new URL(url);
    }
    catch (MalformedURLException e)
    {
        System.out.println("Malformed URL Exception");
    }
    catch (Exception e)
    { 
        System.out.println("Some URL Exception");
    }

    try
    {
        InputStream in = myFileUrl.openStream();
        System.out.println("Does it get here?");
        is = new BufferedInputStream(in);
        in.close();
        is.close();
    }
    catch (IOException e)
    {
        System.out.println("Some IO Exception");
    }
    catch (Exception e)
    {
        System.out.println("Some Exception");
    }   
}

它从未在控制台中打印“它是否到达此处?”但它确实打印了一些IO异常。我知道这不是世界上最好的错误消息。


1
使用e.printStackTrace代替System.out.println可以获得更有用的错误信息。 - skynet
你确定你的应用程序有权限 <uses-permission android:name="android.permission.INTERNET" /> 吗? - dymmeh
我在我的清单文件中有用户权限行。 - RichardG
2个回答

0

那么它是跳到其中一个异常吗?如果无法打开文件,则会跳转到catch语句

编辑:实际上,您是要加载网页吗?


是的,它被IOException捕获了。 - RichardG
你传递给它的字符串值有问题。你想要做什么? - Chris
我正在尝试将网页的内容加载到字符串中。如果URL不正确,那么我应该能够将myFileUrl设置为类似http://www.google.com这样的东西,然后它应该可以工作。我测试了一下,但它仍然做同样的事情。 - RichardG
你看过它抛出了什么异常吗? - Chris
请求时间失败:java.net.SocketException 协议不支持地址族 - RichardG

0

总的来说,代码运行得很好。

因此,可能是您的网络连接出了问题。您是直接连接到互联网还是需要通过代理?


1
我猜你正在使用模拟器进行测试,是吗?在这种情况下,你应该尝试重新创建一个新的AVD。(“你试过关掉再打开吗?”——《IT狂人》) - Wintermute

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接