【发布时间】:2015-01-21 15:58:21
【问题描述】:
请不要将其标记为重复,因为我在发布之前已经搜索过 Stackoverflow,并找到了这个解决方案,
url.openstream() or urlconnection.getinputstream() raise nullpointerexception on valid URL
但这个解决方案也不起作用。
问题是我试图在这个 url 上 openStream > http://www.techworld.com/security/rss 为我的 Android 应用程序。
但它总是给NullPointerException。
我先检查了连接,看是否连接成功,
connection.getResponseCode();
它返回200,所以连接正常。
然后根据可用的解决方案,我将 JRE 版本从 1.7 更改为 1.6,但这仍然不起作用。
当我尝试openStream 其他网址时,它们使用相同的代码绝对可以正常工作,但上面的链接给出了NPE。
这是代码,
URL mylink = new URL ("http://www.techworld.com/security/rss");
HttpURLConnection connection;
connection = (HttpURLConnection) myLink.openConnection();
connection.connect();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
try {
domObject = new DOM(myLink.openStream());
domObject.start();
} catch (Exception e) {
Log.e(TAG,e+" " + host);
}
}
在上面的代码中,host = myLink.getHost();。
我还想提一提的是,当我将此代码作为 Java 项目而不是 Android 项目运行时,它会加载查找而不抛出 NPE。
这可能是什么问题?
这是logCat,它只显示一行错误,
01-21 20:46:11.575: E/testApp(30335): java.lang.NullPointerException www.techworld.com
【问题讨论】:
-
显示 NPE 的堆栈跟踪?从上面的sn-p,唯一的逻辑NPE来自
connection.connect()这一行 -
不,它在
openStream行上显示NPE,您可以看到更新代码的catch块。我还添加了 Logcat ,请参阅。我还想提一下,其他 URL 加载非常好。 -
在这种情况下,如果您没有在 catch 块中捕获错误,实际上会更有用,以便我们查看完整的 LogCat 堆栈跟踪。这样我们就知道它是否专门针对下一行中的 myLink.openStream() 或 .start()。但我们假设您告诉我们 connect() 行是罪魁祸首。
-
@JaySnayder,实际上我试过了,但是 Eclipse 给出了错误,
Unhadled exception type IOException. -
然后使用 e.printStackTrace() 代替自定义 Log.d ...(内部捕获)
标签: java android nullpointerexception